summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenety Goh <benety@mongodb.com>2018-04-17 21:56:42 -0400
committerBenety Goh <benety@mongodb.com>2018-04-17 21:56:42 -0400
commita6411b4e7ac800272d7835fe77c6bc55516efa03 (patch)
tree2f960211abaa703603dd8f85353d9fdcb2eb6604
parent91274b50a3f58f69ce9016e14628f490d1df29a2 (diff)
downloadmongo-a6411b4e7ac800272d7835fe77c6bc55516efa03.tar.gz
SERVER-34372 add ReplicationCoordinator::signalDropPendingCollectionsRemovedFromStorage()
-rw-r--r--src/mongo/client/embedded/replication_coordinator_embedded.cpp4
-rw-r--r--src/mongo/client/embedded/replication_coordinator_embedded.h2
-rw-r--r--src/mongo/db/repl/replication_coordinator.h5
-rw-r--r--src/mongo/db/repl/replication_coordinator_impl.cpp5
-rw-r--r--src/mongo/db/repl/replication_coordinator_impl.h2
-rw-r--r--src/mongo/db/repl/replication_coordinator_mock.cpp2
-rw-r--r--src/mongo/db/repl/replication_coordinator_mock.h2
7 files changed, 22 insertions, 0 deletions
diff --git a/src/mongo/client/embedded/replication_coordinator_embedded.cpp b/src/mongo/client/embedded/replication_coordinator_embedded.cpp
index 2667506d914..e0dfc14ce22 100644
--- a/src/mongo/client/embedded/replication_coordinator_embedded.cpp
+++ b/src/mongo/client/embedded/replication_coordinator_embedded.cpp
@@ -437,5 +437,9 @@ void ReplicationCoordinatorEmbedded::setIndexPrefetchConfig(
UASSERT_NOT_IMPLEMENTED;
}
+void ReplicationCoordinatorEmbedded::signalDropPendingCollectionsRemovedFromStorage() {
+ UASSERT_NOT_IMPLEMENTED;
+}
+
} // namespace embedded
} // namespace mongo
diff --git a/src/mongo/client/embedded/replication_coordinator_embedded.h b/src/mongo/client/embedded/replication_coordinator_embedded.h
index 8ebd438ea46..d76387a5ca1 100644
--- a/src/mongo/client/embedded/replication_coordinator_embedded.h
+++ b/src/mongo/client/embedded/replication_coordinator_embedded.h
@@ -234,6 +234,8 @@ public:
Status abortCatchupIfNeeded() override;
+ void signalDropPendingCollectionsRemovedFromStorage() final;
+
private:
// Back pointer to the ServiceContext that has started the instance.
ServiceContext* const _service;
diff --git a/src/mongo/db/repl/replication_coordinator.h b/src/mongo/db/repl/replication_coordinator.h
index f43c285807c..7b6b77beb5f 100644
--- a/src/mongo/db/repl/replication_coordinator.h
+++ b/src/mongo/db/repl/replication_coordinator.h
@@ -829,6 +829,11 @@ public:
virtual Status abortCatchupIfNeeded() = 0;
/**
+ * Signals that drop pending collections have been removed from storage.
+ */
+ virtual void signalDropPendingCollectionsRemovedFromStorage() = 0;
+
+ /**
* Returns true if logOp() should not append an entry to the oplog for the namespace for this
* operation.
*/
diff --git a/src/mongo/db/repl/replication_coordinator_impl.cpp b/src/mongo/db/repl/replication_coordinator_impl.cpp
index 1437bfa6991..8499c26da0c 100644
--- a/src/mongo/db/repl/replication_coordinator_impl.cpp
+++ b/src/mongo/db/repl/replication_coordinator_impl.cpp
@@ -2671,6 +2671,11 @@ Status ReplicationCoordinatorImpl::abortCatchupIfNeeded() {
return Status(ErrorCodes::IllegalOperation, "The node is not in catch-up mode.");
}
+void ReplicationCoordinatorImpl::signalDropPendingCollectionsRemovedFromStorage() {
+ stdx::lock_guard<stdx::mutex> lock(_mutex);
+ _wakeReadyWaiters_inlock();
+}
+
void ReplicationCoordinatorImpl::_enterDrainMode_inlock() {
_applierState = ApplierState::Draining;
_externalState->stopProducer();
diff --git a/src/mongo/db/repl/replication_coordinator_impl.h b/src/mongo/db/repl/replication_coordinator_impl.h
index d62bf217071..36a03adda66 100644
--- a/src/mongo/db/repl/replication_coordinator_impl.h
+++ b/src/mongo/db/repl/replication_coordinator_impl.h
@@ -311,6 +311,8 @@ public:
virtual Status abortCatchupIfNeeded() override;
+ void signalDropPendingCollectionsRemovedFromStorage() final;
+
// ================== Test support API ===================
/**
diff --git a/src/mongo/db/repl/replication_coordinator_mock.cpp b/src/mongo/db/repl/replication_coordinator_mock.cpp
index d1a55ebe047..437aeea1862 100644
--- a/src/mongo/db/repl/replication_coordinator_mock.cpp
+++ b/src/mongo/db/repl/replication_coordinator_mock.cpp
@@ -490,5 +490,7 @@ Status ReplicationCoordinatorMock::abortCatchupIfNeeded() {
return Status::OK();
}
+void ReplicationCoordinatorMock::signalDropPendingCollectionsRemovedFromStorage() {}
+
} // namespace repl
} // namespace mongo
diff --git a/src/mongo/db/repl/replication_coordinator_mock.h b/src/mongo/db/repl/replication_coordinator_mock.h
index 0dfd6d46527..fd5eb00d58c 100644
--- a/src/mongo/db/repl/replication_coordinator_mock.h
+++ b/src/mongo/db/repl/replication_coordinator_mock.h
@@ -286,6 +286,8 @@ public:
virtual Status abortCatchupIfNeeded() override;
+ void signalDropPendingCollectionsRemovedFromStorage() final;
+
private:
AtomicUInt64 _snapshotNameGenerator;
ServiceContext* const _service;