summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/replication_coordinator_impl_heartbeat.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/repl/replication_coordinator_impl_heartbeat.cpp')
-rw-r--r--src/mongo/db/repl/replication_coordinator_impl_heartbeat.cpp41
1 files changed, 21 insertions, 20 deletions
diff --git a/src/mongo/db/repl/replication_coordinator_impl_heartbeat.cpp b/src/mongo/db/repl/replication_coordinator_impl_heartbeat.cpp
index 6fa02d27a39..faec4c34d41 100644
--- a/src/mongo/db/repl/replication_coordinator_impl_heartbeat.cpp
+++ b/src/mongo/db/repl/replication_coordinator_impl_heartbeat.cpp
@@ -304,8 +304,7 @@ stdx::unique_lock<stdx::mutex> ReplicationCoordinatorImpl::_handleHeartbeatRespo
LOG_FOR_ELECTION(0) << "Scheduling priority takeover at " << _priorityTakeoverWhen;
_priorityTakeoverCbh = _scheduleWorkAt(
_priorityTakeoverWhen, [=](const mongo::executor::TaskExecutor::CallbackArgs&) {
- _startElectSelfIfEligibleV1(
- TopologyCoordinator::StartElectionReason::kPriorityTakeover);
+ _startElectSelfIfEligibleV1(StartElectionReasonEnum::kPriorityTakeover);
});
}
break;
@@ -318,8 +317,7 @@ stdx::unique_lock<stdx::mutex> ReplicationCoordinatorImpl::_handleHeartbeatRespo
LOG_FOR_ELECTION(0) << "Scheduling catchup takeover at " << _catchupTakeoverWhen;
_catchupTakeoverCbh = _scheduleWorkAt(
_catchupTakeoverWhen, [=](const mongo::executor::TaskExecutor::CallbackArgs&) {
- _startElectSelfIfEligibleV1(
- TopologyCoordinator::StartElectionReason::kCatchupTakeover);
+ _startElectSelfIfEligibleV1(StartElectionReasonEnum::kCatchupTakeover);
});
}
break;
@@ -875,15 +873,14 @@ void ReplicationCoordinatorImpl::_cancelAndRescheduleElectionTimeout_inlock() {
_handleElectionTimeoutWhen = when;
_handleElectionTimeoutCbh =
_scheduleWorkAt(when, [=](const mongo::executor::TaskExecutor::CallbackArgs&) {
- _startElectSelfIfEligibleV1(TopologyCoordinator::StartElectionReason::kElectionTimeout);
+ _startElectSelfIfEligibleV1(StartElectionReasonEnum::kElectionTimeout);
});
}
-void ReplicationCoordinatorImpl::_startElectSelfIfEligibleV1(
- TopologyCoordinator::StartElectionReason reason) {
+void ReplicationCoordinatorImpl::_startElectSelfIfEligibleV1(StartElectionReasonEnum reason) {
stdx::lock_guard<stdx::mutex> lock(_mutex);
// If it is not a single node replica set, no need to start an election after stepdown timeout.
- if (reason == TopologyCoordinator::StartElectionReason::kSingleNodePromptElection &&
+ if (reason == StartElectionReasonEnum::kSingleNodePromptElection &&
_rsConfig.getNumMembers() != 1) {
return;
}
@@ -903,52 +900,56 @@ void ReplicationCoordinatorImpl::_startElectSelfIfEligibleV1(
const auto status = _topCoord->becomeCandidateIfElectable(_replExecutor->now(), reason);
if (!status.isOK()) {
switch (reason) {
- case TopologyCoordinator::StartElectionReason::kElectionTimeout:
+ case StartElectionReasonEnum::kElectionTimeout:
LOG_FOR_ELECTION(0)
<< "Not starting an election, since we are not electable due to: "
<< status.reason();
break;
- case TopologyCoordinator::StartElectionReason::kPriorityTakeover:
+ case StartElectionReasonEnum::kPriorityTakeover:
LOG_FOR_ELECTION(0) << "Not starting an election for a priority takeover, "
<< "since we are not electable due to: " << status.reason();
break;
- case TopologyCoordinator::StartElectionReason::kStepUpRequest:
- case TopologyCoordinator::StartElectionReason::kStepUpRequestSkipDryRun:
+ case StartElectionReasonEnum::kStepUpRequest:
+ case StartElectionReasonEnum::kStepUpRequestSkipDryRun:
LOG_FOR_ELECTION(0) << "Not starting an election for a replSetStepUp request, "
<< "since we are not electable due to: " << status.reason();
break;
- case TopologyCoordinator::StartElectionReason::kCatchupTakeover:
+ case StartElectionReasonEnum::kCatchupTakeover:
LOG_FOR_ELECTION(0) << "Not starting an election for a catchup takeover, "
<< "since we are not electable due to: " << status.reason();
break;
- case TopologyCoordinator::StartElectionReason::kSingleNodePromptElection:
+ case StartElectionReasonEnum::kSingleNodePromptElection:
LOG_FOR_ELECTION(0)
<< "Not starting an election for a single node replica set prompt election, "
<< "since we are not electable due to: " << status.reason();
break;
+ default:
+ MONGO_UNREACHABLE;
}
return;
}
switch (reason) {
- case TopologyCoordinator::StartElectionReason::kElectionTimeout:
+ case StartElectionReasonEnum::kElectionTimeout:
LOG_FOR_ELECTION(0) << "Starting an election, since we've seen no PRIMARY in the past "
<< _rsConfig.getElectionTimeoutPeriod();
break;
- case TopologyCoordinator::StartElectionReason::kPriorityTakeover:
+ case StartElectionReasonEnum::kPriorityTakeover:
LOG_FOR_ELECTION(0) << "Starting an election for a priority takeover";
break;
- case TopologyCoordinator::StartElectionReason::kStepUpRequest:
- case TopologyCoordinator::StartElectionReason::kStepUpRequestSkipDryRun:
+ case StartElectionReasonEnum::kStepUpRequest:
+ case StartElectionReasonEnum::kStepUpRequestSkipDryRun:
LOG_FOR_ELECTION(0) << "Starting an election due to step up request";
break;
- case TopologyCoordinator::StartElectionReason::kCatchupTakeover:
+ case StartElectionReasonEnum::kCatchupTakeover:
LOG_FOR_ELECTION(0) << "Starting an election for a catchup takeover";
break;
- case TopologyCoordinator::StartElectionReason::kSingleNodePromptElection:
+ case StartElectionReasonEnum::kSingleNodePromptElection:
LOG_FOR_ELECTION(0)
<< "Starting an election due to single node replica set prompt election";
break;
+ default:
+ MONGO_UNREACHABLE;
}
_startElectSelfV1_inlock(reason);