From 224f23b0f8bcdfe458fb0340fa704007b83d77b2 Mon Sep 17 00:00:00 2001 From: Xin Dong Date: Fri, 11 Sep 2020 11:45:02 -0700 Subject: [PATCH] Rely on MasterRecoveryState message since we only care about the current generation. --- fdbserver/Status.actor.cpp | 6 ++---- fdbserver/masterserver.actor.cpp | 2 -- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/fdbserver/Status.actor.cpp b/fdbserver/Status.actor.cpp index 57f3202b31..e4584710df 100644 --- a/fdbserver/Status.actor.cpp +++ b/fdbserver/Status.actor.cpp @@ -1030,11 +1030,10 @@ ACTOR static Future recoveryStateStatusFetcher(WorkerDetails try { std::vector> futures; futures.push_back(timeoutError(mWorker.interf.eventLogRequest.getReply( EventLogRequest( LiteralStringRef("MasterRecoveryGenerations") ) ), 1.0)); - futures.push_back(timeoutError(mWorker.interf.eventLogRequest.getReply( EventLogRequest( LiteralStringRef("MasterRecoveryFullyRecovered") ) ), 1.0)); futures.push_back(timeoutError(mWorker.interf.eventLogRequest.getReply( EventLogRequest( LiteralStringRef("MasterRecoveryState") ) ), 1.0)); std::vector msgs = wait(getAll(futures)); - const TraceEventFields& md = msgs[2]; + const TraceEventFields& md = msgs[1]; int mStatusCode = md.getInt("StatusCode"); if (mStatusCode < 0 || mStatusCode >= RecoveryStatus::END) throw attribute_not_found(); @@ -1042,9 +1041,8 @@ ACTOR static Future recoveryStateStatusFetcher(WorkerDetails message = JsonString::makeMessage(RecoveryStatus::names[mStatusCode], RecoveryStatus::descriptions[mStatusCode]); *statusCode = mStatusCode; - const TraceEventFields& mLastRecoveryMsg = msgs[1]; std::string lastFullyRecoveredTimeS; - if (mLastRecoveryMsg.tryGetValue("Time", lastFullyRecoveredTimeS)) { + if (mStatusCode == RecoveryStatus::fully_recovered && md.tryGetValue("Time", lastFullyRecoveredTimeS)) { double lastFullyRecoveredTime = atof(lastFullyRecoveredTimeS.c_str()); // `lastFullyRecoveredTime` is the timestamp taken on master so the time interval calculated below may not // be accurate due to the clock skew across the network, but it's good enough for the purpose it's used. diff --git a/fdbserver/masterserver.actor.cpp b/fdbserver/masterserver.actor.cpp index 4803930bfc..ce5c993d77 100644 --- a/fdbserver/masterserver.actor.cpp +++ b/fdbserver/masterserver.actor.cpp @@ -1276,8 +1276,6 @@ ACTOR Future trackTlogRecovery( Reference self, Referencedbgid) .detail("ActiveGenerations", 1) .trackLatest("MasterRecoveryGenerations");