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-02 19:30:01 -0500
commitaaee42ed5273eb36b9eb7f28cd1f437abcd610fd (patch)
tree1550447362d076e976c6b18fc0b51c2b8a990e79
parent4403f1b1b503e67058ef7425d7e278be1d5b3e84 (diff)
downloadmongo-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.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 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);