summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorA. Jesse Jiryu Davis <jesse@mongodb.com>2018-12-14 16:08:46 -0500
committerA. Jesse Jiryu Davis <jesse@mongodb.com>2019-07-01 07:31:47 -0400
commit0cf58da55734ff8327e256f77ecc22a819ba313d (patch)
tree903bef61d2fae2f1f735912235482fb3578b4fe9
parent663bbd278e0a11d37cb2ba02f5e1349a9ce985bb (diff)
downloadmongo-0cf58da55734ff8327e256f77ecc22a819ba313d.tar.gz
SERVER-38659 Fix race in stepdown test
-rw-r--r--src/mongo/db/repl/replication_coordinator_impl_test.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/mongo/db/repl/replication_coordinator_impl_test.cpp b/src/mongo/db/repl/replication_coordinator_impl_test.cpp
index 891817c8cde..4924ca869b7 100644
--- a/src/mongo/db/repl/replication_coordinator_impl_test.cpp
+++ b/src/mongo/db/repl/replication_coordinator_impl_test.cpp
@@ -132,10 +132,16 @@ TEST_F(ReplCoordTest, IsMasterIsFalseDuringStepdown) {
simulateSuccessfulV1Election();
ASSERT(replCoord->getMemberState().primary());
+ // Primary begins stepping down due to new term, but cannot finish.
+ getGlobalFailPointRegistry()
+ ->getFailPoint("blockHeartbeatStepdown")
+ ->setMode(FailPoint::alwaysOn);
+
TopologyCoordinator::UpdateTermResult updateTermResult;
replCoord->updateTerm_forTest(replCoord->getTerm() + 1, &updateTermResult);
ASSERT(TopologyCoordinator::UpdateTermResult::kTriggerStepDown == updateTermResult);
+ // Test that "ismaster" is immediately false, although "secondary" is not yet true.
IsMasterResponse response;
replCoord->fillIsMasterForReplSet(&response, {});
ASSERT_TRUE(response.isConfigSet());
@@ -143,6 +149,8 @@ TEST_F(ReplCoordTest, IsMasterIsFalseDuringStepdown) {
ASSERT_FALSE(responseObj["ismaster"].Bool());
ASSERT_FALSE(responseObj["secondary"].Bool());
ASSERT_FALSE(responseObj.hasField("isreplicaset"));
+
+ getGlobalFailPointRegistry()->getFailPoint("blockHeartbeatStepdown")->setMode(FailPoint::off);
}
TEST_F(ReplCoordTest, NodeEntersStartup2StateWhenStartingUpWithValidLocalConfig) {