diff options
author | A. Jesse Jiryu Davis <jesse@mongodb.com> | 2018-12-14 16:08:46 -0500 |
---|---|---|
committer | A. Jesse Jiryu Davis <jesse@mongodb.com> | 2019-07-01 07:31:47 -0400 |
commit | 0cf58da55734ff8327e256f77ecc22a819ba313d (patch) | |
tree | 903bef61d2fae2f1f735912235482fb3578b4fe9 | |
parent | 663bbd278e0a11d37cb2ba02f5e1349a9ce985bb (diff) | |
download | mongo-0cf58da55734ff8327e256f77ecc22a819ba313d.tar.gz |
SERVER-38659 Fix race in stepdown test
-rw-r--r-- | src/mongo/db/repl/replication_coordinator_impl_test.cpp | 8 |
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) { |