diff options
Diffstat (limited to 'src/mongo/db/repl/replication_metrics.cpp')
-rw-r--r-- | src/mongo/db/repl/replication_metrics.cpp | 54 |
1 files changed, 36 insertions, 18 deletions
diff --git a/src/mongo/db/repl/replication_metrics.cpp b/src/mongo/db/repl/replication_metrics.cpp index 55508674562..0794c43fd0c 100644 --- a/src/mongo/db/repl/replication_metrics.cpp +++ b/src/mongo/db/repl/replication_metrics.cpp @@ -56,32 +56,31 @@ ReplicationMetrics::ReplicationMetrics() ReplicationMetrics::~ReplicationMetrics() {} -void ReplicationMetrics::incrementNumElectionsCalledForReason( - TopologyCoordinator::StartElectionReason reason) { +void ReplicationMetrics::incrementNumElectionsCalledForReason(StartElectionReasonEnum reason) { stdx::lock_guard<stdx::mutex> lk(_mutex); switch (reason) { - case TopologyCoordinator::StartElectionReason::kStepUpRequest: - case TopologyCoordinator::StartElectionReason::kStepUpRequestSkipDryRun: { + case StartElectionReasonEnum::kStepUpRequest: + case StartElectionReasonEnum::kStepUpRequestSkipDryRun: { ElectionReasonCounter& stepUpCmd = _electionMetrics.getStepUpCmd(); stepUpCmd.incrementCalled(); break; } - case TopologyCoordinator::StartElectionReason::kPriorityTakeover: { + case StartElectionReasonEnum::kPriorityTakeover: { ElectionReasonCounter& priorityTakeover = _electionMetrics.getPriorityTakeover(); priorityTakeover.incrementCalled(); break; } - case TopologyCoordinator::StartElectionReason::kCatchupTakeover: { + case StartElectionReasonEnum::kCatchupTakeover: { ElectionReasonCounter& catchUpTakeover = _electionMetrics.getCatchUpTakeover(); catchUpTakeover.incrementCalled(); break; } - case TopologyCoordinator::StartElectionReason::kElectionTimeout: { + case StartElectionReasonEnum::kElectionTimeout: { ElectionReasonCounter& electionTimeout = _electionMetrics.getElectionTimeout(); electionTimeout.incrementCalled(); break; } - case TopologyCoordinator::StartElectionReason::kSingleNodePromptElection: { + case StartElectionReasonEnum::kSingleNodePromptElection: { ElectionReasonCounter& freezeTimeout = _electionMetrics.getFreezeTimeout(); freezeTimeout.incrementCalled(); break; @@ -89,32 +88,31 @@ void ReplicationMetrics::incrementNumElectionsCalledForReason( } } -void ReplicationMetrics::incrementNumElectionsSuccessfulForReason( - TopologyCoordinator::StartElectionReason reason) { +void ReplicationMetrics::incrementNumElectionsSuccessfulForReason(StartElectionReasonEnum reason) { stdx::lock_guard<stdx::mutex> lk(_mutex); switch (reason) { - case TopologyCoordinator::StartElectionReason::kStepUpRequest: - case TopologyCoordinator::StartElectionReason::kStepUpRequestSkipDryRun: { + case StartElectionReasonEnum::kStepUpRequest: + case StartElectionReasonEnum::kStepUpRequestSkipDryRun: { ElectionReasonCounter& stepUpCmd = _electionMetrics.getStepUpCmd(); stepUpCmd.incrementSuccessful(); break; } - case TopologyCoordinator::StartElectionReason::kPriorityTakeover: { + case StartElectionReasonEnum::kPriorityTakeover: { ElectionReasonCounter& priorityTakeover = _electionMetrics.getPriorityTakeover(); priorityTakeover.incrementSuccessful(); break; } - case TopologyCoordinator::StartElectionReason::kCatchupTakeover: { + case StartElectionReasonEnum::kCatchupTakeover: { ElectionReasonCounter& catchUpTakeover = _electionMetrics.getCatchUpTakeover(); catchUpTakeover.incrementSuccessful(); break; } - case TopologyCoordinator::StartElectionReason::kElectionTimeout: { + case StartElectionReasonEnum::kElectionTimeout: { ElectionReasonCounter& electionTimeout = _electionMetrics.getElectionTimeout(); electionTimeout.incrementSuccessful(); break; } - case TopologyCoordinator::StartElectionReason::kSingleNodePromptElection: { + case StartElectionReasonEnum::kSingleNodePromptElection: { ElectionReasonCounter& freezeTimeout = _electionMetrics.getFreezeTimeout(); freezeTimeout.incrementSuccessful(); break; @@ -263,10 +261,30 @@ long ReplicationMetrics::getNumCatchUpsFailedWithReplSetAbortPrimaryCatchUpCmd_f return _electionMetrics.getNumCatchUpsFailedWithReplSetAbortPrimaryCatchUpCmd(); } -void ReplicationMetrics::setElectionCandidateMetrics(Date_t lastElectionDate) { +void ReplicationMetrics::setElectionCandidateMetrics( + const StartElectionReasonEnum reason, + const Date_t lastElectionDate, + const long long termAtElection, + const OpTime lastCommittedOpTime, + const OpTime lastSeenOpTime, + const int numVotesNeeded, + const double priorityAtElection, + const Milliseconds electionTimeout, + const boost::optional<int> priorPrimaryMemberId) { + stdx::lock_guard<stdx::mutex> lk(_mutex); - _electionCandidateMetrics.setLastElectionDate(lastElectionDate); + _nodeIsCandidateOrPrimary = true; + _electionCandidateMetrics.setLastElectionReason(reason); + _electionCandidateMetrics.setLastElectionDate(lastElectionDate); + _electionCandidateMetrics.setTermAtElection(termAtElection); + _electionCandidateMetrics.setLastCommittedOpTimeAtElection(lastCommittedOpTime); + _electionCandidateMetrics.setLastSeenOpTimeAtElection(lastSeenOpTime); + _electionCandidateMetrics.setNumVotesNeeded(numVotesNeeded); + _electionCandidateMetrics.setPriorityAtElection(priorityAtElection); + long long electionTimeoutMillis = durationCount<Milliseconds>(electionTimeout); + _electionCandidateMetrics.setElectionTimeoutMillis(electionTimeoutMillis); + _electionCandidateMetrics.setPriorPrimaryMemberId(priorPrimaryMemberId); } void ReplicationMetrics::setTargetCatchupOpTime(OpTime opTime) { |