diff options
author | Siyuan Zhou <siyuan.zhou@mongodb.com> | 2017-02-27 18:24:14 -0500 |
---|---|---|
committer | Siyuan Zhou <siyuan.zhou@mongodb.com> | 2017-03-02 19:30:01 -0500 |
commit | aaee42ed5273eb36b9eb7f28cd1f437abcd610fd (patch) | |
tree | 1550447362d076e976c6b18fc0b51c2b8a990e79 | |
parent | 4403f1b1b503e67058ef7425d7e278be1d5b3e84 (diff) | |
download | mongo-aaee42ed5273eb36b9eb7f28cd1f437abcd610fd.tar.gz |
SERVER-28110 Set secondaryCatchUpPeriodSecs smaller when requesting remote primary stepdown
-rw-r--r-- | src/mongo/db/repl/replication_coordinator_impl_elect_test.cpp | 1 | ||||
-rw-r--r-- | src/mongo/db/repl/replication_coordinator_impl_heartbeat.cpp | 9 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/mongo/db/repl/replication_coordinator_impl_elect_test.cpp b/src/mongo/db/repl/replication_coordinator_impl_elect_test.cpp index 51817d9e0c2..5d3514af2e1 100644 --- a/src/mongo/db/repl/replication_coordinator_impl_elect_test.cpp +++ b/src/mongo/db/repl/replication_coordinator_impl_elect_test.cpp @@ -516,6 +516,7 @@ TEST_F(ReplCoordElectTest, StepsDownRemoteIfNodeHasHigherPriorityThanCurrentPrim auto&& request = noi->getRequest(); log() << request.target << " processing " << request.cmdObj; ASSERT_EQUALS("replSetStepDown", request.cmdObj.firstElement().fieldNameStringData()); + ASSERT_EQUALS(1LL, request.cmdObj["secondaryCatchUpPeriodSecs"].safeNumberLong()); auto target = request.target; ASSERT_EQUALS(HostAndPort("node2", 12345), target); auto response = makeResponseStatus(BSON("ok" << 1)); diff --git a/src/mongo/db/repl/replication_coordinator_impl_heartbeat.cpp b/src/mongo/db/repl/replication_coordinator_impl_heartbeat.cpp index 72ff8ccb973..ad38191066c 100644 --- a/src/mongo/db/repl/replication_coordinator_impl_heartbeat.cpp +++ b/src/mongo/db/repl/replication_coordinator_impl_heartbeat.cpp @@ -329,7 +329,14 @@ void remoteStepdownCallback(const ReplicationExecutor::RemoteCommandCallbackArgs } // namespace void ReplicationCoordinatorImpl::_requestRemotePrimaryStepdown(const HostAndPort& target) { - RemoteCommandRequest request(target, "admin", BSON("replSetStepDown" << 20), nullptr); + auto secondaryCatchUpPeriod(duration_cast<Seconds>(_rsConfig.getHeartbeatInterval() / 2)); + RemoteCommandRequest request( + target, + "admin", + BSON("replSetStepDown" << 20 << "secondaryCatchUpPeriodSecs" + << std::min(static_cast<long long>(secondaryCatchUpPeriod.count()), + 20LL)), + nullptr); log() << "Requesting " << target << " step down from primary"; CBHStatus cbh = _replExecutor.scheduleRemoteCommand(request, remoteStepdownCallback); |