summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorXueruiFa <xuerui.fa@mongodb.com>2020-07-20 20:41:32 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-09-08 21:50:53 +0000
commit103b545528e7cf05537bd68bda4bc8235bf6fefa (patch)
treef61e51f20249b714b4e636c419ea83504368bf94 /src
parent020b0463d95f8b3d337351955598842528b38c47 (diff)
downloadmongo-103b545528e7cf05537bd68bda4bc8235bf6fefa.tar.gz
SERVER-49730: Replace usages of waitForDrainFinish
(cherry picked from commit f8be36eca7f5d17b0cbea557e8825046352eea19)
Diffstat (limited to 'src')
-rw-r--r--src/mongo/db/repl/repl_set_commands.cpp14
-rw-r--r--src/mongo/db/repl/replication_coordinator.h9
-rw-r--r--src/mongo/db/repl/replication_coordinator_impl.cpp15
-rw-r--r--src/mongo/db/repl/replication_coordinator_impl.h2
-rw-r--r--src/mongo/db/repl/replication_coordinator_impl_test.cpp41
-rw-r--r--src/mongo/db/repl/replication_coordinator_mock.cpp5
-rw-r--r--src/mongo/db/repl/replication_coordinator_mock.h2
-rw-r--r--src/mongo/db/repl/replication_coordinator_noop.cpp4
-rw-r--r--src/mongo/db/repl/replication_coordinator_noop.h2
-rw-r--r--src/mongo/embedded/replication_coordinator_embedded.cpp4
-rw-r--r--src/mongo/embedded/replication_coordinator_embedded.h2
11 files changed, 2 insertions, 98 deletions
diff --git a/src/mongo/db/repl/repl_set_commands.cpp b/src/mongo/db/repl/repl_set_commands.cpp
index 89ecc3aeb13..f6942eb59ae 100644
--- a/src/mongo/db/repl/repl_set_commands.cpp
+++ b/src/mongo/db/repl/repl_set_commands.cpp
@@ -135,20 +135,6 @@ public:
uassertStatusOK(status);
return true;
- } else if (cmdObj.hasElement("waitForDrainFinish")) {
- long long timeoutMillis;
- auto status = bsonExtractIntegerField(cmdObj, "waitForDrainFinish", &timeoutMillis);
- uassertStatusOK(status);
- Milliseconds timeout(timeoutMillis);
- LOGV2(21575,
- "replSetTest: waiting {timeout} for applier buffer to finish draining",
- "replSetTest: waiting for applier buffer to finish draining",
- "timeout"_attr = timeout);
-
- status = replCoord->waitForDrainFinish(timeout);
-
- uassertStatusOK(status);
- return true;
} else if (cmdObj.hasElement("getLastStableRecoveryTimestamp")) {
boost::optional<Timestamp> ts =
StorageInterface::get(getGlobalServiceContext())
diff --git a/src/mongo/db/repl/replication_coordinator.h b/src/mongo/db/repl/replication_coordinator.h
index cec8785f9e8..15f90b521bd 100644
--- a/src/mongo/db/repl/replication_coordinator.h
+++ b/src/mongo/db/repl/replication_coordinator.h
@@ -567,15 +567,6 @@ public:
virtual void signalDrainComplete(OperationContext* opCtx, long long termWhenBufferIsEmpty) = 0;
/**
- * Waits duration of 'timeout' for applier to finish draining its buffer of operations.
- * Returns OK if we are not in drain mode.
- * Returns ErrorCodes::ExceededTimeLimit if we timed out waiting for the applier to drain its
- * buffer.
- * Returns ErrorCodes::BadValue if timeout is negative.
- */
- virtual Status waitForDrainFinish(Milliseconds timeout) = 0;
-
- /**
* Signals the sync source feedback thread to wake up and send a handshake and
* replSetUpdatePosition command to our sync source.
*/
diff --git a/src/mongo/db/repl/replication_coordinator_impl.cpp b/src/mongo/db/repl/replication_coordinator_impl.cpp
index d732fa5faeb..257f567ab7f 100644
--- a/src/mongo/db/repl/replication_coordinator_impl.cpp
+++ b/src/mongo/db/repl/replication_coordinator_impl.cpp
@@ -1182,21 +1182,6 @@ void ReplicationCoordinatorImpl::signalDrainComplete(OperationContext* opCtx,
_externalState->startNoopWriter(_getMyLastAppliedOpTime_inlock());
}
-Status ReplicationCoordinatorImpl::waitForDrainFinish(Milliseconds timeout) {
- if (timeout < Milliseconds(0)) {
- return Status(ErrorCodes::BadValue, "Timeout duration cannot be negative");
- }
-
- stdx::unique_lock<Latch> lk(_mutex);
- auto pred = [this]() { return _applierState != ApplierState::Draining; };
- if (!_drainFinishedCond.wait_for(lk, timeout.toSystemDuration(), pred)) {
- return Status(ErrorCodes::ExceededTimeLimit,
- "Timed out waiting to finish draining applier buffer");
- }
-
- return Status::OK();
-}
-
void ReplicationCoordinatorImpl::signalUpstreamUpdater() {
_externalState->forwardSlaveProgress();
}
diff --git a/src/mongo/db/repl/replication_coordinator_impl.h b/src/mongo/db/repl/replication_coordinator_impl.h
index bde6f3136b8..3a3ee224169 100644
--- a/src/mongo/db/repl/replication_coordinator_impl.h
+++ b/src/mongo/db/repl/replication_coordinator_impl.h
@@ -207,8 +207,6 @@ public:
virtual void signalDrainComplete(OperationContext* opCtx,
long long termWhenBufferIsEmpty) override;
- virtual Status waitForDrainFinish(Milliseconds timeout) override;
-
virtual void signalUpstreamUpdater() override;
virtual Status resyncData(OperationContext* opCtx, bool waitUntilCompleted) override;
diff --git a/src/mongo/db/repl/replication_coordinator_impl_test.cpp b/src/mongo/db/repl/replication_coordinator_impl_test.cpp
index 14fcdc02acd..b982b6a672b 100644
--- a/src/mongo/db/repl/replication_coordinator_impl_test.cpp
+++ b/src/mongo/db/repl/replication_coordinator_impl_test.cpp
@@ -1674,8 +1674,8 @@ TEST_F(ReplCoordTest, DrainCompletionMidStepDown) {
// Now wait for stepdown to complete
getReplExec()->waitForEvent(updateTermEvh);
- // By now drain mode should be cancelled.
- ASSERT_OK(getReplCoord()->waitForDrainFinish(Milliseconds(0)));
+ // By now, the node should have left drain mode.
+ ASSERT(ReplicationCoordinator::ApplierState::Draining != getReplCoord()->getApplierState());
ASSERT_TRUE(getReplCoord()->getMemberState().secondary());
// ASSERT_EQUALS(2, getReplCoord()->getTerm()); // SERVER-28290
@@ -7228,43 +7228,6 @@ TEST_F(ReplCoordTest, WaitForMemberState) {
replCoord->waitForMemberState(MemberState::RS_ARBITER, Milliseconds(0)));
}
-TEST_F(ReplCoordTest, WaitForDrainFinish) {
- init("mySet");
-
- assertStartSuccess(BSON("_id"
- << "mySet"
- << "version" << 1 << "members"
- << BSON_ARRAY(BSON("_id" << 0 << "host"
- << "test1:1234"))),
- HostAndPort("test1", 1234));
- auto replCoord = getReplCoord();
- auto initialTerm = replCoord->getTerm();
- replCoordSetMyLastAppliedOpTime(OpTime(Timestamp(1, 1), 0), Date_t() + Seconds(100));
- replCoordSetMyLastDurableOpTime(OpTime(Timestamp(1, 1), 0), Date_t() + Seconds(100));
- ASSERT_OK(replCoord->setFollowerMode(MemberState::RS_SECONDARY));
-
- // Single node cluster - this node should start election on setFollowerMode() completion.
- replCoord->waitForElectionFinish_forTest();
-
- // Successful dry run election increases term.
- ASSERT_EQUALS(initialTerm + 1, replCoord->getTerm());
-
- auto timeout = Milliseconds(1);
- ASSERT_OK(replCoord->waitForMemberState(MemberState::RS_PRIMARY, timeout));
-
- ASSERT(replCoord->getApplierState() == ReplicationCoordinator::ApplierState::Draining);
- ASSERT_EQUALS(ErrorCodes::ExceededTimeLimit, replCoord->waitForDrainFinish(timeout));
-
- ASSERT_EQUALS(ErrorCodes::BadValue, replCoord->waitForDrainFinish(Milliseconds(-1)));
-
- const auto opCtx = makeOperationContext();
- signalDrainComplete(opCtx.get());
- ASSERT_OK(replCoord->waitForDrainFinish(timeout));
-
- // Zero timeout is fine.
- ASSERT_OK(replCoord->waitForDrainFinish(Milliseconds(0)));
-}
-
TEST_F(
ReplCoordTest,
PopulateUnsetWriteConcernOptionsSyncModeReturnsInputWithSyncModeNoneIfUnsetAndWriteConcernMajorityJournalDefaultIsFalse) {
diff --git a/src/mongo/db/repl/replication_coordinator_mock.cpp b/src/mongo/db/repl/replication_coordinator_mock.cpp
index a06f8acf20e..f598ba1c273 100644
--- a/src/mongo/db/repl/replication_coordinator_mock.cpp
+++ b/src/mongo/db/repl/replication_coordinator_mock.cpp
@@ -307,11 +307,6 @@ ReplicationCoordinator::ApplierState ReplicationCoordinatorMock::getApplierState
void ReplicationCoordinatorMock::signalDrainComplete(OperationContext*, long long) {}
-Status ReplicationCoordinatorMock::waitForDrainFinish(Milliseconds timeout) {
- MONGO_UNREACHABLE;
- return Status::OK();
-}
-
void ReplicationCoordinatorMock::signalUpstreamUpdater() {}
Status ReplicationCoordinatorMock::resyncData(OperationContext* opCtx, bool waitUntilCompleted) {
diff --git a/src/mongo/db/repl/replication_coordinator_mock.h b/src/mongo/db/repl/replication_coordinator_mock.h
index bd43047be54..628e2cdd201 100644
--- a/src/mongo/db/repl/replication_coordinator_mock.h
+++ b/src/mongo/db/repl/replication_coordinator_mock.h
@@ -174,8 +174,6 @@ public:
virtual void signalDrainComplete(OperationContext*, long long);
- virtual Status waitForDrainFinish(Milliseconds timeout) override;
-
virtual void signalUpstreamUpdater();
virtual Status resyncData(OperationContext* opCtx, bool waitUntilCompleted) override;
diff --git a/src/mongo/db/repl/replication_coordinator_noop.cpp b/src/mongo/db/repl/replication_coordinator_noop.cpp
index a591118079e..84727c19b04 100644
--- a/src/mongo/db/repl/replication_coordinator_noop.cpp
+++ b/src/mongo/db/repl/replication_coordinator_noop.cpp
@@ -187,10 +187,6 @@ void ReplicationCoordinatorNoOp::signalDrainComplete(OperationContext*, long lon
MONGO_UNREACHABLE;
}
-Status ReplicationCoordinatorNoOp::waitForDrainFinish(Milliseconds) {
- MONGO_UNREACHABLE;
-}
-
void ReplicationCoordinatorNoOp::signalUpstreamUpdater() {
MONGO_UNREACHABLE;
}
diff --git a/src/mongo/db/repl/replication_coordinator_noop.h b/src/mongo/db/repl/replication_coordinator_noop.h
index 59d16ef5f89..91f49315f74 100644
--- a/src/mongo/db/repl/replication_coordinator_noop.h
+++ b/src/mongo/db/repl/replication_coordinator_noop.h
@@ -154,8 +154,6 @@ public:
void signalDrainComplete(OperationContext*, long long) final;
- Status waitForDrainFinish(Milliseconds) final;
-
void signalUpstreamUpdater() final;
Status resyncData(OperationContext*, bool) final;
diff --git a/src/mongo/embedded/replication_coordinator_embedded.cpp b/src/mongo/embedded/replication_coordinator_embedded.cpp
index 0f3505ac042..5b93a2c1fb5 100644
--- a/src/mongo/embedded/replication_coordinator_embedded.cpp
+++ b/src/mongo/embedded/replication_coordinator_embedded.cpp
@@ -194,10 +194,6 @@ void ReplicationCoordinatorEmbedded::signalDrainComplete(OperationContext*, long
UASSERT_NOT_IMPLEMENTED;
}
-Status ReplicationCoordinatorEmbedded::waitForDrainFinish(Milliseconds) {
- UASSERT_NOT_IMPLEMENTED;
-}
-
void ReplicationCoordinatorEmbedded::signalUpstreamUpdater() {
UASSERT_NOT_IMPLEMENTED;
}
diff --git a/src/mongo/embedded/replication_coordinator_embedded.h b/src/mongo/embedded/replication_coordinator_embedded.h
index e8f55226073..8d96e050617 100644
--- a/src/mongo/embedded/replication_coordinator_embedded.h
+++ b/src/mongo/embedded/replication_coordinator_embedded.h
@@ -161,8 +161,6 @@ public:
void signalDrainComplete(OperationContext*, long long) override;
- Status waitForDrainFinish(Milliseconds) override;
-
void signalUpstreamUpdater() override;
Status resyncData(OperationContext*, bool) override;