diff options
author | XueruiFa <xuerui.fa@mongodb.com> | 2020-10-13 14:02:52 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-10-13 14:37:02 +0000 |
commit | 8dbb92e85ff1480697baeef0cc56f6fb84f856a9 (patch) | |
tree | 52b86326392117e912faab6a8983d46e9cbad306 /src/mongo/db/repl/replication_coordinator_impl_heartbeat_v1_test.cpp | |
parent | 58f3065958b4a40e4ee88f98b588a5b9210876af (diff) | |
download | mongo-8dbb92e85ff1480697baeef0cc56f6fb84f856a9.tar.gz |
Revert "SERVER-50318: Only cancel scheduled heartbeats"
This reverts commit 379c0116b694d8d88ec096170e703fe3d0119e55.
Diffstat (limited to 'src/mongo/db/repl/replication_coordinator_impl_heartbeat_v1_test.cpp')
-rw-r--r-- | src/mongo/db/repl/replication_coordinator_impl_heartbeat_v1_test.cpp | 99 |
1 files changed, 7 insertions, 92 deletions
diff --git a/src/mongo/db/repl/replication_coordinator_impl_heartbeat_v1_test.cpp b/src/mongo/db/repl/replication_coordinator_impl_heartbeat_v1_test.cpp index 66b36319c30..6c980c2c228 100644 --- a/src/mongo/db/repl/replication_coordinator_impl_heartbeat_v1_test.cpp +++ b/src/mongo/db/repl/replication_coordinator_impl_heartbeat_v1_test.cpp @@ -186,87 +186,6 @@ TEST_F(ReplCoordHBV1Test, ASSERT_TRUE(getExternalState()->threadsStarted()); } -TEST_F(ReplCoordHBV1Test, RestartingHeartbeatsShouldOnlyCancelScheduledHeartbeats) { - auto replAllSeverityGuard = unittest::MinimumLoggedSeverityGuard{ - logv2::LogComponent::kReplication, logv2::LogSeverity::Debug(3)}; - - auto replConfigBson = BSON("_id" - << "mySet" - << "protocolVersion" << 1 << "version" << 1 << "members" - << BSON_ARRAY(BSON("_id" << 1 << "host" - << "node1:12345") - << BSON("_id" << 2 << "host" - << "node2:12345") - << BSON("_id" << 3 << "host" - << "node3:12345"))); - - assertStartSuccess(replConfigBson, HostAndPort("node1", 12345)); - ASSERT_OK(getReplCoord()->setFollowerMode(MemberState::RS_SECONDARY)); - - getReplCoord()->updateTerm_forTest(1, nullptr); - ASSERT_EQ(getReplCoord()->getTerm(), 1); - - auto rsConfig = getReplCoord()->getConfig(); - - enterNetwork(); - for (int j = 0; j < 2; ++j) { - const auto noi = getNet()->getNextReadyRequest(); - const RemoteCommandRequest& hbrequest = noi->getRequest(); - - // Skip responding to node2's heartbeat request, so that it stays in SENT state. - if (hbrequest.target == HostAndPort("node2", 12345)) { - getNet()->blackHole(noi); - continue; - } - - // Respond to node3's heartbeat request so that we schedule a new heartbeat request that - // stays in SCHEDULED state. - ReplSetHeartbeatResponse hbResp; - hbResp.setSetName("mySet"); - hbResp.setState(MemberState::RS_SECONDARY); - hbResp.setConfigVersion(rsConfig.getConfigVersion()); - // The smallest valid optime in PV1. - OpTime opTime(Timestamp(), 0); - hbResp.setAppliedOpTimeAndWallTime({opTime, Date_t()}); - hbResp.setDurableOpTimeAndWallTime({opTime, Date_t()}); - BSONObjBuilder responseBuilder; - responseBuilder << "ok" << 1; - hbResp.addToBSON(&responseBuilder); - getNet()->scheduleResponse(noi, getNet()->now(), makeResponseStatus(responseBuilder.obj())); - - getNet()->runReadyNetworkOperations(); - } - ASSERT_FALSE(getNet()->hasReadyRequests()); - exitNetwork(); - - // Receive a request from node3 saying it's the primary, so that we restart scheduled - // heartbeats. - receiveHeartbeatFrom(rsConfig, - 3 /* senderId */, - HostAndPort("node3", 12345), - 1 /* term */, - 3 /* currentPrimaryId */); - - enterNetwork(); - - // Verify that only node3's heartbeat request was cancelled. - ASSERT_TRUE(getNet()->hasReadyRequests()); - const auto noi = getNet()->getNextReadyRequest(); - // 'request' represents the request sent from self(node1) back to node3. - const RemoteCommandRequest& request = noi->getRequest(); - ReplSetHeartbeatArgsV1 args; - ASSERT_OK(args.initialize(request.cmdObj)); - ASSERT_EQ(request.target, HostAndPort("node3", 12345)); - ASSERT_EQ(args.getPrimaryId(), -1); - // We don't need to respond. - getNet()->blackHole(noi); - - // The heartbeat request for node2 should not have been cancelled, so there should not be any - // more network ready requests. - ASSERT_FALSE(getNet()->hasReadyRequests()); - exitNetwork(); -} - TEST_F(ReplCoordHBV1Test, SecondaryReceivesHeartbeatRequestFromPrimaryWithDifferentPrimaryIdRestartsHeartbeats) { auto replAllSeverityGuard = unittest::MinimumLoggedSeverityGuard{ @@ -288,22 +207,18 @@ TEST_F(ReplCoordHBV1Test, getReplCoord()->updateTerm_forTest(1, nullptr); ASSERT_EQ(getReplCoord()->getTerm(), 1); - auto rsConfig = getReplCoord()->getConfig(); - + enterNetwork(); + // Ignore the first 2 messages. for (int j = 0; j < 2; ++j) { - // Respond to the initial heartbeat request so that we schedule a new heartbeat request that - // stays in SCHEDULED state. - replyToReceivedHeartbeatV1(); + const auto noi = getNet()->getNextReadyRequest(); + noi->getRequest(); + getNet()->blackHole(noi); } - - // Verify that there are no further heartbeat requests, since the heartbeat requests should be - // scheduled for the future. - enterNetwork(); ASSERT_FALSE(getNet()->hasReadyRequests()); exitNetwork(); // We're a secondary and we receive a request from node3 saying it's the primary. - receiveHeartbeatFrom(rsConfig, + receiveHeartbeatFrom(getReplCoord()->getConfig(), 3 /* senderId */, HostAndPort("node3", 12345), 1 /* term */, @@ -328,7 +243,7 @@ TEST_F(ReplCoordHBV1Test, exitNetwork(); // Heartbeat in a stale term shouldn't re-schedule heartbeats. - receiveHeartbeatFrom(rsConfig, + receiveHeartbeatFrom(getReplCoord()->getConfig(), 3 /* senderId */, HostAndPort("node3", 12345), 0 /* term */, |