summaryrefslogtreecommitdiff
path: root/src/mongo
diff options
context:
space:
mode:
authorGeorge Wangensteen <george.wangensteen@mongodb.com>2020-10-13 14:17:15 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-10-21 17:15:54 +0000
commit8de14ac959567c9bc29a108db65114ffd2a91163 (patch)
tree29851840c7d862dd683cdff46410ef569d31d777 /src/mongo
parent982c685651b1d76222ac84aadf6130a51add1411 (diff)
downloadmongo-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.cpp9
-rw-r--r--src/mongo/db/repl/replication_coordinator.h3
-rw-r--r--src/mongo/db/repl/replication_coordinator_impl.cpp16
-rw-r--r--src/mongo/db/repl/replication_coordinator_impl.h7
-rw-r--r--src/mongo/db/repl/replication_coordinator_impl_test.cpp50
-rw-r--r--src/mongo/db/repl/replication_coordinator_mock.cpp3
-rw-r--r--src/mongo/db/repl/replication_coordinator_mock.h3
-rw-r--r--src/mongo/db/repl/replication_coordinator_noop.cpp3
-rw-r--r--src/mongo/db/repl/replication_coordinator_noop.h2
-rw-r--r--src/mongo/db/repl/reporter.cpp54
-rw-r--r--src/mongo/db/repl/reporter_test.cpp49
-rw-r--r--src/mongo/db/repl/topology_coordinator.cpp3
-rw-r--r--src/mongo/db/repl/topology_coordinator.h4
-rw-r--r--src/mongo/embedded/replication_coordinator_embedded.cpp3
-rw-r--r--src/mongo/embedded/replication_coordinator_embedded.h2
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;