diff options
author | George Wangensteen <george.wangensteen@mongodb.com> | 2020-10-13 14:17:15 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-10-21 17:15:54 +0000 |
commit | 8de14ac959567c9bc29a108db65114ffd2a91163 (patch) | |
tree | 29851840c7d862dd683cdff46410ef569d31d777 /src/mongo | |
parent | 982c685651b1d76222ac84aadf6130a51add1411 (diff) | |
download | mongo-8de14ac959567c9bc29a108db65114ffd2a91163.tar.gz |
SERVER-49183 Remove unused parameter from TopologyCoordinator::setLastOptime.
Diffstat (limited to 'src/mongo')
-rw-r--r-- | src/mongo/db/repl/repl_set_commands.cpp | 9 | ||||
-rw-r--r-- | src/mongo/db/repl/replication_coordinator.h | 3 | ||||
-rw-r--r-- | src/mongo/db/repl/replication_coordinator_impl.cpp | 16 | ||||
-rw-r--r-- | src/mongo/db/repl/replication_coordinator_impl.h | 7 | ||||
-rw-r--r-- | src/mongo/db/repl/replication_coordinator_impl_test.cpp | 50 | ||||
-rw-r--r-- | src/mongo/db/repl/replication_coordinator_mock.cpp | 3 | ||||
-rw-r--r-- | src/mongo/db/repl/replication_coordinator_mock.h | 3 | ||||
-rw-r--r-- | src/mongo/db/repl/replication_coordinator_noop.cpp | 3 | ||||
-rw-r--r-- | src/mongo/db/repl/replication_coordinator_noop.h | 2 | ||||
-rw-r--r-- | src/mongo/db/repl/reporter.cpp | 54 | ||||
-rw-r--r-- | src/mongo/db/repl/reporter_test.cpp | 49 | ||||
-rw-r--r-- | src/mongo/db/repl/topology_coordinator.cpp | 3 | ||||
-rw-r--r-- | src/mongo/db/repl/topology_coordinator.h | 4 | ||||
-rw-r--r-- | src/mongo/embedded/replication_coordinator_embedded.cpp | 3 | ||||
-rw-r--r-- | src/mongo/embedded/replication_coordinator_embedded.h | 2 |
15 files changed, 46 insertions, 165 deletions
diff --git a/src/mongo/db/repl/repl_set_commands.cpp b/src/mongo/db/repl/repl_set_commands.cpp index a02a4d32ccb..5d5acc25fd2 100644 --- a/src/mongo/db/repl/repl_set_commands.cpp +++ b/src/mongo/db/repl/repl_set_commands.cpp @@ -660,19 +660,12 @@ public: replCoord->processReplSetMetadata(metadata); } - // In the case of an update from a member with an invalid replica set config, - // we return our current config version. - long long configVersion = -1; - UpdatePositionArgs args; status = args.initialize(cmdObj); if (status.isOK()) { - status = replCoord->processReplSetUpdatePosition(args, &configVersion); + status = replCoord->processReplSetUpdatePosition(args); - if (status == ErrorCodes::InvalidReplicaSetConfig) { - result.append("configVersion", configVersion); - } // TODO convert to uassertStatusOK once SERVER-34806 is done. return CommandHelpers::appendCommandStatusNoThrow(result, status); } else { diff --git a/src/mongo/db/repl/replication_coordinator.h b/src/mongo/db/repl/replication_coordinator.h index 5338ab09abd..60ed1c1eb1d 100644 --- a/src/mongo/db/repl/replication_coordinator.h +++ b/src/mongo/db/repl/replication_coordinator.h @@ -745,8 +745,7 @@ public: * "configVersion" will be populated with our config version if and only if we return * InvalidReplicaSetConfig. */ - virtual Status processReplSetUpdatePosition(const UpdatePositionArgs& updates, - long long* configVersion) = 0; + virtual Status processReplSetUpdatePosition(const UpdatePositionArgs& updates) = 0; /** * Returns a bool indicating whether or not this node builds indexes. diff --git a/src/mongo/db/repl/replication_coordinator_impl.cpp b/src/mongo/db/repl/replication_coordinator_impl.cpp index 96281dc8153..f62dc804b19 100644 --- a/src/mongo/db/repl/replication_coordinator_impl.cpp +++ b/src/mongo/db/repl/replication_coordinator_impl.cpp @@ -1748,8 +1748,7 @@ Status ReplicationCoordinatorImpl::setLastDurableOptime_forTest(long long cfgVer const UpdatePositionArgs::UpdateInfo update( OpTime(), Date_t(), opTime, wallTime, cfgVer, memberId); - long long configVersion; - const auto status = _setLastOptime(lock, update, &configVersion); + const auto status = _setLastOptime(lock, update); return status; } @@ -1766,15 +1765,13 @@ Status ReplicationCoordinatorImpl::setLastAppliedOptime_forTest(long long cfgVer const UpdatePositionArgs::UpdateInfo update( opTime, wallTime, OpTime(), Date_t(), cfgVer, memberId); - long long configVersion; - const auto status = _setLastOptime(lock, update, &configVersion); + const auto status = _setLastOptime(lock, update); return status; } Status ReplicationCoordinatorImpl::_setLastOptime(WithLock lk, - const UpdatePositionArgs::UpdateInfo& args, - long long* configVersion) { - auto result = _topCoord->setLastOptime(args, _replExecutor->now(), configVersion); + const UpdatePositionArgs::UpdateInfo& args) { + auto result = _topCoord->setLastOptime(args, _replExecutor->now()); if (!result.isOK()) return result.getStatus(); const bool advancedOpTime = result.getValue(); @@ -4567,15 +4564,14 @@ void ReplicationCoordinatorImpl::_wakeReadyWaiters(WithLock lk, boost::optional< opTime); } -Status ReplicationCoordinatorImpl::processReplSetUpdatePosition(const UpdatePositionArgs& updates, - long long* configVersion) { +Status ReplicationCoordinatorImpl::processReplSetUpdatePosition(const UpdatePositionArgs& updates) { stdx::unique_lock<Latch> lock(_mutex); Status status = Status::OK(); bool somethingChanged = false; for (UpdatePositionArgs::UpdateIterator update = updates.updatesBegin(); update != updates.updatesEnd(); ++update) { - status = _setLastOptime(lock, *update, configVersion); + status = _setLastOptime(lock, *update); if (!status.isOK()) { break; } diff --git a/src/mongo/db/repl/replication_coordinator_impl.h b/src/mongo/db/repl/replication_coordinator_impl.h index 10437a4467f..e73f0516de0 100644 --- a/src/mongo/db/repl/replication_coordinator_impl.h +++ b/src/mongo/db/repl/replication_coordinator_impl.h @@ -263,8 +263,7 @@ public: const BSONObj& configObj, BSONObjBuilder* resultObj) override; - virtual Status processReplSetUpdatePosition(const UpdatePositionArgs& updates, - long long* configVersion) override; + virtual Status processReplSetUpdatePosition(const UpdatePositionArgs& updates) override; virtual bool buildsIndexes() override; @@ -987,9 +986,7 @@ private: * "configVersion" will be populated with our config version if it and the configVersion * of "args" differ. */ - Status _setLastOptime(WithLock lk, - const UpdatePositionArgs::UpdateInfo& args, - long long* configVersion); + Status _setLastOptime(WithLock lk, const UpdatePositionArgs::UpdateInfo& args); /** * This function will report our position externally (like upstream) if necessary. diff --git a/src/mongo/db/repl/replication_coordinator_impl_test.cpp b/src/mongo/db/repl/replication_coordinator_impl_test.cpp index d353f715e16..c01888362c0 100644 --- a/src/mongo/db/repl/replication_coordinator_impl_test.cpp +++ b/src/mongo/db/repl/replication_coordinator_impl_test.cpp @@ -1431,7 +1431,6 @@ TEST_F(ReplCoordTest, UpdatePositionArgsAdvancesWallTimes) { ASSERT_TRUE(repl->getMemberState().primary()); // Catch up the secondaries using only replSetUpdatePosition. - long long configVersion = repl->getConfig().getConfigVersion(); UpdatePositionArgs updatePositionArgs; Date_t memberOneAppliedWallTime = Date_t() + Seconds(3); @@ -1444,20 +1443,22 @@ TEST_F(ReplCoordTest, UpdatePositionArgsAdvancesWallTimes) { << 1 << UpdatePositionArgs::kUpdateArrayFieldName << BSON_ARRAY( BSON(UpdatePositionArgs::kConfigVersionFieldName - << configVersion << UpdatePositionArgs::kMemberIdFieldName << 1 + << repl->getConfig().getConfigVersion() + << UpdatePositionArgs::kMemberIdFieldName << 1 << UpdatePositionArgs::kAppliedOpTimeFieldName << opTime2.asOpTime().toBSON() << UpdatePositionArgs::kAppliedWallTimeFieldName << memberOneAppliedWallTime << UpdatePositionArgs::kDurableOpTimeFieldName << opTime2.asOpTime().toBSON() << UpdatePositionArgs::kDurableWallTimeFieldName << memberOneDurableWallTime) << BSON(UpdatePositionArgs::kConfigVersionFieldName - << configVersion << UpdatePositionArgs::kMemberIdFieldName << 2 + << repl->getConfig().getConfigVersion() + << UpdatePositionArgs::kMemberIdFieldName << 2 << UpdatePositionArgs::kAppliedOpTimeFieldName << opTime2.asOpTime().toBSON() << UpdatePositionArgs::kAppliedWallTimeFieldName << memberTwoAppliedWallTime << UpdatePositionArgs::kDurableOpTimeFieldName << opTime2.asOpTime().toBSON() << UpdatePositionArgs::kDurableWallTimeFieldName << memberTwoDurableWallTime))))); - ASSERT_OK(repl->processReplSetUpdatePosition(updatePositionArgs, &configVersion)); + ASSERT_OK(repl->processReplSetUpdatePosition(updatePositionArgs)); // Make sure wall times are propagated through processReplSetUpdatePosition auto memberDataVector = repl->getMemberData(); @@ -1720,7 +1721,6 @@ TEST_F(StepDownTest, StepDownCanCompleteBasedOnReplSetUpdatePositionAlone) { ASSERT_TRUE(repl->getMemberState().primary()); // Catch up one of the secondaries using only replSetUpdatePosition. - long long configVersion = repl->getConfig().getConfigVersion(); UpdatePositionArgs updatePositionArgs; ASSERT_OK(updatePositionArgs.initialize(BSON( @@ -1728,7 +1728,8 @@ TEST_F(StepDownTest, StepDownCanCompleteBasedOnReplSetUpdatePositionAlone) { << 1 << UpdatePositionArgs::kUpdateArrayFieldName << BSON_ARRAY( BSON(UpdatePositionArgs::kConfigVersionFieldName - << configVersion << UpdatePositionArgs::kMemberIdFieldName << 1 + << repl->getConfig().getConfigVersion() + << UpdatePositionArgs::kMemberIdFieldName << 1 << UpdatePositionArgs::kAppliedOpTimeFieldName << opTime2.asOpTime().toBSON() << UpdatePositionArgs::kAppliedWallTimeFieldName << Date_t() + Seconds(opTime2.asOpTime().getSecs()) @@ -1736,7 +1737,8 @@ TEST_F(StepDownTest, StepDownCanCompleteBasedOnReplSetUpdatePositionAlone) { << UpdatePositionArgs::kDurableWallTimeFieldName << Date_t() + Seconds(opTime2.asOpTime().getSecs())) << BSON(UpdatePositionArgs::kConfigVersionFieldName - << configVersion << UpdatePositionArgs::kMemberIdFieldName << 2 + << repl->getConfig().getConfigVersion() + << UpdatePositionArgs::kMemberIdFieldName << 2 << UpdatePositionArgs::kAppliedOpTimeFieldName << opTime1.asOpTime().toBSON() << UpdatePositionArgs::kAppliedWallTimeFieldName << Date_t() + Seconds(opTime1.asOpTime().getSecs()) @@ -1744,7 +1746,7 @@ TEST_F(StepDownTest, StepDownCanCompleteBasedOnReplSetUpdatePositionAlone) { << UpdatePositionArgs::kDurableWallTimeFieldName << Date_t() + Seconds(opTime1.asOpTime().getSecs())))))); - ASSERT_OK(repl->processReplSetUpdatePosition(updatePositionArgs, &configVersion)); + ASSERT_OK(repl->processReplSetUpdatePosition(updatePositionArgs)); // Verify that stepDown completes successfully. ASSERT_OK(*result.second.get()); @@ -1856,7 +1858,6 @@ TEST_F(StepDownTestWithUnelectableNode, // Use replSetUpdatePosition to catch up the first secondary, which is not electable. // This will yield a majority at the primary's opTime, so the waiter will be woken up, // but stepDown will not be able to complete. - long long configVersion = repl->getConfig().getConfigVersion(); UpdatePositionArgs catchupFirstSecondary; ASSERT_OK(catchupFirstSecondary.initialize(BSON( @@ -1864,7 +1865,8 @@ TEST_F(StepDownTestWithUnelectableNode, << 1 << UpdatePositionArgs::kUpdateArrayFieldName << BSON_ARRAY( BSON(UpdatePositionArgs::kConfigVersionFieldName - << configVersion << UpdatePositionArgs::kMemberIdFieldName << 1 + << repl->getConfig().getConfigVersion() + << UpdatePositionArgs::kMemberIdFieldName << 1 << UpdatePositionArgs::kAppliedOpTimeFieldName << opTime2.asOpTime().toBSON() << UpdatePositionArgs::kAppliedWallTimeFieldName << Date_t() + Seconds(opTime2.asOpTime().getSecs()) @@ -1872,7 +1874,8 @@ TEST_F(StepDownTestWithUnelectableNode, << UpdatePositionArgs::kDurableWallTimeFieldName << Date_t() + Seconds(opTime2.asOpTime().getSecs())) << BSON(UpdatePositionArgs::kConfigVersionFieldName - << configVersion << UpdatePositionArgs::kMemberIdFieldName << 2 + << repl->getConfig().getConfigVersion() + << UpdatePositionArgs::kMemberIdFieldName << 2 << UpdatePositionArgs::kAppliedOpTimeFieldName << opTime1.asOpTime().toBSON() << UpdatePositionArgs::kAppliedWallTimeFieldName << Date_t() + Seconds(opTime1.asOpTime().getSecs()) @@ -1880,7 +1883,7 @@ TEST_F(StepDownTestWithUnelectableNode, << UpdatePositionArgs::kDurableWallTimeFieldName << Date_t() + Seconds(opTime1.asOpTime().getSecs())))))); - ASSERT_OK(repl->processReplSetUpdatePosition(catchupFirstSecondary, &configVersion)); + ASSERT_OK(repl->processReplSetUpdatePosition(catchupFirstSecondary)); // The primary has still not been able to finish stepping down. ASSERT_TRUE(repl->getMemberState().primary()); @@ -1894,7 +1897,8 @@ TEST_F(StepDownTestWithUnelectableNode, << 1 << UpdatePositionArgs::kUpdateArrayFieldName << BSON_ARRAY( BSON(UpdatePositionArgs::kConfigVersionFieldName - << configVersion << UpdatePositionArgs::kMemberIdFieldName << 1 + << repl->getConfig().getConfigVersion() + << UpdatePositionArgs::kMemberIdFieldName << 1 << UpdatePositionArgs::kAppliedOpTimeFieldName << opTime2.asOpTime().toBSON() << UpdatePositionArgs::kAppliedWallTimeFieldName << Date_t() + Seconds(opTime2.asOpTime().getSecs()) @@ -1902,7 +1906,8 @@ TEST_F(StepDownTestWithUnelectableNode, << UpdatePositionArgs::kDurableWallTimeFieldName << Date_t() + Seconds(opTime2.asOpTime().getSecs())) << BSON(UpdatePositionArgs::kConfigVersionFieldName - << configVersion << UpdatePositionArgs::kMemberIdFieldName << 2 + << repl->getConfig().getConfigVersion() + << UpdatePositionArgs::kMemberIdFieldName << 2 << UpdatePositionArgs::kAppliedOpTimeFieldName << opTime2.asOpTime().toBSON() << UpdatePositionArgs::kAppliedWallTimeFieldName << Date_t() + Seconds(opTime2.asOpTime().getSecs()) @@ -1910,7 +1915,7 @@ TEST_F(StepDownTestWithUnelectableNode, << UpdatePositionArgs::kDurableWallTimeFieldName << Date_t() + Seconds(opTime2.asOpTime().getSecs())))))); - ASSERT_OK(repl->processReplSetUpdatePosition(catchupOtherSecondary, &configVersion)); + ASSERT_OK(repl->processReplSetUpdatePosition(catchupOtherSecondary)); // Verify that stepDown completes successfully. ASSERT_OK(*result.second.get()); @@ -4922,7 +4927,7 @@ TEST_F(ReplCoordTest, DoNotProcessSelfWhenUpdatePositionContainsInfoAboutSelf) { << UpdatePositionArgs::kAppliedWallTimeFieldName << Date_t() + Seconds(time2.getSecs())))))); - ASSERT_OK(getReplCoord()->processReplSetUpdatePosition(args, nullptr)); + ASSERT_OK(getReplCoord()->processReplSetUpdatePosition(args)); ASSERT_EQUALS(ErrorCodes::WriteConcernFailed, getReplCoord()->awaitReplication(opCtx.get(), time2, writeConcern).status); } @@ -4971,7 +4976,7 @@ TEST_F(ReplCoordTest, ProcessUpdatePositionWhenItsConfigVersionIsDifferent) { auto opCtx = makeOperationContext(); - ASSERT_OK(getReplCoord()->processReplSetUpdatePosition(args, nullptr)); + ASSERT_OK(getReplCoord()->processReplSetUpdatePosition(args)); ASSERT_OK(getReplCoord()->awaitReplication(opCtx.get(), time2, writeConcern).status); } @@ -5020,8 +5025,7 @@ TEST_F(ReplCoordTest, DoNotProcessUpdatePositionOfMembersWhoseIdsAreNotInTheConf auto opCtx = makeOperationContext(); - ASSERT_EQUALS(ErrorCodes::NodeNotFound, - getReplCoord()->processReplSetUpdatePosition(args, nullptr)); + ASSERT_EQUALS(ErrorCodes::NodeNotFound, getReplCoord()->processReplSetUpdatePosition(args)); ASSERT_EQUALS(ErrorCodes::WriteConcernFailed, getReplCoord()->awaitReplication(opCtx.get(), time2, writeConcern).status); } @@ -5084,7 +5088,7 @@ TEST_F(ReplCoordTest, auto opCtx = makeOperationContext(); - ASSERT_OK(getReplCoord()->processReplSetUpdatePosition(args, nullptr)); + ASSERT_OK(getReplCoord()->processReplSetUpdatePosition(args)); ASSERT_OK(getReplCoord()->awaitReplication(opCtx.get(), time2, writeConcern).status); writeConcern.wNumNodes = 3; @@ -7145,7 +7149,7 @@ TEST_F(ReplCoordTest, StepDownWhenHandleLivenessTimeoutMarksAMajorityOfVotingNod << UpdatePositionArgs::kDurableWallTimeFieldName << Date_t() + Seconds(startingOpTime.getSecs())))))); - ASSERT_OK(getReplCoord()->processReplSetUpdatePosition(args, nullptr)); + ASSERT_OK(getReplCoord()->processReplSetUpdatePosition(args)); // Become PRIMARY. simulateSuccessfulV1Election(); @@ -7174,7 +7178,7 @@ TEST_F(ReplCoordTest, StepDownWhenHandleLivenessTimeoutMarksAMajorityOfVotingNod const Date_t startDate = getNet()->now(); getNet()->enterNetwork(); getNet()->runUntil(startDate + Milliseconds(100)); - ASSERT_OK(getReplCoord()->processReplSetUpdatePosition(args1, nullptr)); + ASSERT_OK(getReplCoord()->processReplSetUpdatePosition(args1)); // Confirm that the node remains PRIMARY after the other two nodes are marked DOWN. getNet()->runUntil(startDate + Milliseconds(2080)); @@ -7219,7 +7223,7 @@ TEST_F(ReplCoordTest, StepDownWhenHandleLivenessTimeoutMarksAMajorityOfVotingNod << UpdatePositionArgs::kAppliedOpTimeFieldName << startingOpTime.toBSON() << UpdatePositionArgs::kAppliedWallTimeFieldName << Date_t() + Seconds(startingOpTime.getSecs())))))); - ASSERT_OK(getReplCoord()->processReplSetUpdatePosition(args2, nullptr)); + ASSERT_OK(getReplCoord()->processReplSetUpdatePosition(args2)); hbArgs.setSetName("mySet"); hbArgs.setConfigVersion(2); diff --git a/src/mongo/db/repl/replication_coordinator_mock.cpp b/src/mongo/db/repl/replication_coordinator_mock.cpp index c77cfbe570e..413a5a5b2b5 100644 --- a/src/mongo/db/repl/replication_coordinator_mock.cpp +++ b/src/mongo/db/repl/replication_coordinator_mock.cpp @@ -442,8 +442,7 @@ Status ReplicationCoordinatorMock::processReplSetInitiate(OperationContext* opCt return Status::OK(); } -Status ReplicationCoordinatorMock::processReplSetUpdatePosition(const UpdatePositionArgs& updates, - long long* configVersion) { +Status ReplicationCoordinatorMock::processReplSetUpdatePosition(const UpdatePositionArgs& updates) { // TODO return Status::OK(); } diff --git a/src/mongo/db/repl/replication_coordinator_mock.h b/src/mongo/db/repl/replication_coordinator_mock.h index d7d74471e45..1ed58c17892 100644 --- a/src/mongo/db/repl/replication_coordinator_mock.h +++ b/src/mongo/db/repl/replication_coordinator_mock.h @@ -229,8 +229,7 @@ public: const BSONObj& configObj, BSONObjBuilder* resultObj); - virtual Status processReplSetUpdatePosition(const UpdatePositionArgs& updates, - long long* configVersion); + virtual Status processReplSetUpdatePosition(const UpdatePositionArgs& updates); virtual bool buildsIndexes(); diff --git a/src/mongo/db/repl/replication_coordinator_noop.cpp b/src/mongo/db/repl/replication_coordinator_noop.cpp index e23efe39bd9..cc6ddda8af2 100644 --- a/src/mongo/db/repl/replication_coordinator_noop.cpp +++ b/src/mongo/db/repl/replication_coordinator_noop.cpp @@ -352,8 +352,7 @@ void ReplicationCoordinatorNoOp::incrementNumCatchUpOpsIfCatchingUp(long numOps) MONGO_UNREACHABLE; } -Status ReplicationCoordinatorNoOp::processReplSetUpdatePosition(const UpdatePositionArgs&, - long long*) { +Status ReplicationCoordinatorNoOp::processReplSetUpdatePosition(const UpdatePositionArgs&) { MONGO_UNREACHABLE; } diff --git a/src/mongo/db/repl/replication_coordinator_noop.h b/src/mongo/db/repl/replication_coordinator_noop.h index 22a91e840e9..c0c837d65dd 100644 --- a/src/mongo/db/repl/replication_coordinator_noop.h +++ b/src/mongo/db/repl/replication_coordinator_noop.h @@ -200,7 +200,7 @@ public: Status processReplSetInitiate(OperationContext*, const BSONObj&, BSONObjBuilder*) final; - Status processReplSetUpdatePosition(const UpdatePositionArgs&, long long*) final; + Status processReplSetUpdatePosition(const UpdatePositionArgs&) final; std::vector<HostAndPort> getHostsWrittenTo(const OpTime&, bool) final; diff --git a/src/mongo/db/repl/reporter.cpp b/src/mongo/db/repl/reporter.cpp index a2dea6e34ff..a77fd231732 100644 --- a/src/mongo/db/repl/reporter.cpp +++ b/src/mongo/db/repl/reporter.cpp @@ -47,50 +47,11 @@ namespace repl { namespace { -const char kConfigVersionFieldName[] = "configVersion"; - // The number of replSetUpdatePosition commands a node sent to its sync source. Counter64 numUpdatePosition; ServerStatusMetricField<Counter64> displayNumUpdatePosition( "repl.network.replSetUpdatePosition.num", &numUpdatePosition); -/** - * Returns configuration version in update command object. - * Returns -1 on failure. - */ -template <typename UpdatePositionArgsType> -long long _parseCommandRequestConfigVersion(const BSONObj& commandRequest) { - UpdatePositionArgsType args; - if (!args.initialize(commandRequest).isOK()) { - return -1; - } - if (args.updatesBegin() == args.updatesEnd()) { - return -1; - } - return args.updatesBegin()->cfgver; -} - -/** - * Returns true if config version in replSetUpdatePosition response is higher than config version in - * locally generated update command request object. - * Returns false if config version is missing in either document. - */ -bool _isTargetConfigNewerThanRequest(const BSONObj& commandResult, const BSONObj& commandRequest) { - long long targetConfigVersion; - if (!bsonExtractIntegerField(commandResult, kConfigVersionFieldName, &targetConfigVersion) - .isOK()) { - return false; - } - - const long long localConfigVersion = - _parseCommandRequestConfigVersion<UpdatePositionArgs>(commandRequest); - if (localConfigVersion == -1) { - return false; - } - - return targetConfigVersion > localConfigVersion; -} - } // namespace Reporter::Reporter(executor::TaskExecutor* executor, @@ -283,20 +244,7 @@ void Reporter::_processResponseCallback( const auto& commandResult = rcbd.response.data; _status = getStatusFromCommandResult(commandResult); - // Some error types are OK and should not cause the reporter to stop sending updates to the - // sync target. - if (_status == ErrorCodes::InvalidReplicaSetConfig && - _isTargetConfigNewerThanRequest(commandResult, rcbd.request.cmdObj)) { - LOGV2_DEBUG( - 21589, - 1, - "Reporter found newer configuration on sync source: {syncSource}. Retrying.", - "Reporter found newer configuration on sync source. Retrying", - "syncSource"_attr = _target); - _status = Status::OK(); - // Do not resend update command immediately. - _isWaitingToSendReporter = false; - } else if (!_status.isOK()) { + if (!_status.isOK()) { _onShutdown_inlock(); return; } diff --git a/src/mongo/db/repl/reporter_test.cpp b/src/mongo/db/repl/reporter_test.cpp index c7167073130..8c90f759d18 100644 --- a/src/mongo/db/repl/reporter_test.cpp +++ b/src/mongo/db/repl/reporter_test.cpp @@ -409,55 +409,6 @@ TEST_F(ReporterTest, UnsuccessfulCommandResponseStopsTheReporter) { assertReporterDone(); } -TEST_F(ReporterTestNoTriggerAtSetUp, - InvalidReplicaSetResponseToARequestWithoutConfigVersionStopsTheReporter) { - posUpdater->setConfigVersion(-1); - ASSERT_OK(reporter->trigger()); - ASSERT_TRUE(reporter->isActive()); - - processNetworkResponse(BSON("ok" << 0 << "code" << int(ErrorCodes::InvalidReplicaSetConfig) - << "errmsg" - << "newer config" - << "configVersion" << 100)); - - ASSERT_EQUALS(Status(ErrorCodes::InvalidReplicaSetConfig, "invalid config"), reporter->join()); - assertReporterDone(); -} - -TEST_F(ReporterTest, InvalidReplicaSetResponseWithoutConfigVersionOnSyncTargetStopsTheReporter) { - processNetworkResponse(BSON("ok" << 0 << "code" << int(ErrorCodes::InvalidReplicaSetConfig) - << "errmsg" - << "invalid config")); - - ASSERT_EQUALS(Status(ErrorCodes::InvalidReplicaSetConfig, "invalid config"), reporter->join()); - assertReporterDone(); -} - -TEST_F(ReporterTest, InvalidReplicaSetResponseWithSameConfigVersionOnSyncTargetStopsTheReporter) { - processNetworkResponse(BSON("ok" << 0 << "code" << int(ErrorCodes::InvalidReplicaSetConfig) - << "errmsg" - << "invalid config" - << "configVersion" << posUpdater->getConfigVersion())); - - ASSERT_EQUALS(Status(ErrorCodes::InvalidReplicaSetConfig, "invalid config"), reporter->join()); - assertReporterDone(); -} - -TEST_F(ReporterTest, - InvalidReplicaSetResponseWithNewerConfigVersionOnSyncTargetDoesNotStopTheReporter) { - // Reporter should not retry update command on sync source immediately after seeing newer - // configuration. - ASSERT_OK(reporter->trigger()); - ASSERT_TRUE(reporter->isWaitingToSendReport()); - - processNetworkResponse(BSON("ok" << 0 << "code" << int(ErrorCodes::InvalidReplicaSetConfig) - << "errmsg" - << "newer config" - << "configVersion" << posUpdater->getConfigVersion() + 1)); - - ASSERT_TRUE(reporter->isActive()); -} - // Schedule while we are already scheduled, it should set "isWaitingToSendReport", then // automatically // schedule itself after finishing. diff --git a/src/mongo/db/repl/topology_coordinator.cpp b/src/mongo/db/repl/topology_coordinator.cpp index b81faaab756..4b6538d9cc3 100644 --- a/src/mongo/db/repl/topology_coordinator.cpp +++ b/src/mongo/db/repl/topology_coordinator.cpp @@ -1347,8 +1347,7 @@ void TopologyCoordinator::setMyLastDurableOpTimeAndWallTime(OpTimeAndWallTime op } StatusWith<bool> TopologyCoordinator::setLastOptime(const UpdatePositionArgs::UpdateInfo& args, - Date_t now, - long long* configVersion) { + Date_t now) { if (_selfIndex == -1) { // Ignore updates when we're in state REMOVED. return Status(ErrorCodes::NotPrimaryOrSecondary, diff --git a/src/mongo/db/repl/topology_coordinator.h b/src/mongo/db/repl/topology_coordinator.h index 5f7f9fbe2c1..c76b0136194 100644 --- a/src/mongo/db/repl/topology_coordinator.h +++ b/src/mongo/db/repl/topology_coordinator.h @@ -573,9 +573,7 @@ public: * Returns a Status if the position could not be set, false if the last optimes for the node * did not change, or true if either the last applied or last durable optime did change. */ - StatusWith<bool> setLastOptime(const UpdatePositionArgs::UpdateInfo& args, - Date_t now, - long long* configVersion); + StatusWith<bool> setLastOptime(const UpdatePositionArgs::UpdateInfo& args, Date_t now); /** * Sets the latest optime committed in the previous config to the current lastCommitted optime. diff --git a/src/mongo/embedded/replication_coordinator_embedded.cpp b/src/mongo/embedded/replication_coordinator_embedded.cpp index b92deb55c45..9743437ce5b 100644 --- a/src/mongo/embedded/replication_coordinator_embedded.cpp +++ b/src/mongo/embedded/replication_coordinator_embedded.cpp @@ -376,8 +376,7 @@ void ReplicationCoordinatorEmbedded::incrementNumCatchUpOpsIfCatchingUp(long num UASSERT_NOT_IMPLEMENTED; } -Status ReplicationCoordinatorEmbedded::processReplSetUpdatePosition(const UpdatePositionArgs&, - long long*) { +Status ReplicationCoordinatorEmbedded::processReplSetUpdatePosition(const UpdatePositionArgs&) { UASSERT_NOT_IMPLEMENTED; } diff --git a/src/mongo/embedded/replication_coordinator_embedded.h b/src/mongo/embedded/replication_coordinator_embedded.h index 15ab7521b1b..fd8c137e335 100644 --- a/src/mongo/embedded/replication_coordinator_embedded.h +++ b/src/mongo/embedded/replication_coordinator_embedded.h @@ -208,7 +208,7 @@ public: Status processReplSetInitiate(OperationContext*, const BSONObj&, BSONObjBuilder*) override; - Status processReplSetUpdatePosition(const repl::UpdatePositionArgs&, long long*) override; + Status processReplSetUpdatePosition(const repl::UpdatePositionArgs&) override; std::vector<HostAndPort> getHostsWrittenTo(const repl::OpTime&, bool) override; |