summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiyuan Zhou <siyuan.zhou@mongodb.com>2017-02-27 18:24:14 -0500
committerSiyuan Zhou <siyuan.zhou@mongodb.com>2017-03-07 12:20:35 -0500
commitcac769a8711b350614475567beaa56d46e121aad (patch)
tree7be2249fef729cf62a4168f1fd9f60ae551dbd46
parent1ce2bb9f88d621136e8a624e1f48d7d2af8f1c12 (diff)
downloadmongo-cac769a8711b350614475567beaa56d46e121aad.tar.gz
SERVER-28110 Set secondaryCatchUpPeriodSecs smaller when requesting remote primary stepdown
(cherry picked from commit aaee42ed5273eb36b9eb7f28cd1f437abcd610fd)
-rw-r--r--src/mongo/db/repl/replication_coordinator_impl_elect_test.cpp1
-rw-r--r--src/mongo/db/repl/replication_coordinator_impl_heartbeat.cpp9
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 0520bbad0f2..642c1007cb2 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 6c344de33cb..e08e138873b 100644
--- a/src/mongo/db/repl/replication_coordinator_impl_heartbeat.cpp
+++ b/src/mongo/db/repl/replication_coordinator_impl_heartbeat.cpp
@@ -309,7 +309,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);