diff options
author | Benety Goh <benety@mongodb.com> | 2018-04-17 21:56:42 -0400 |
---|---|---|
committer | Benety Goh <benety@mongodb.com> | 2018-04-17 21:56:42 -0400 |
commit | a6411b4e7ac800272d7835fe77c6bc55516efa03 (patch) | |
tree | 2f960211abaa703603dd8f85353d9fdcb2eb6604 | |
parent | 91274b50a3f58f69ce9016e14628f490d1df29a2 (diff) | |
download | mongo-a6411b4e7ac800272d7835fe77c6bc55516efa03.tar.gz |
SERVER-34372 add ReplicationCoordinator::signalDropPendingCollectionsRemovedFromStorage()
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; |