diff options
author | Benety Goh <benety@mongodb.com> | 2020-03-10 14:47:38 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-03-10 19:46:47 +0000 |
commit | 588531744dcb3da7ab811da297cb53d62a21add6 (patch) | |
tree | 7f03da69782d7d5f25dafd291c1324291a7ff272 /src/mongo | |
parent | dc895c373b8e48113ce7505595b05011dd02f6e4 (diff) | |
download | mongo-588531744dcb3da7ab811da297cb53d62a21add6.tar.gz |
SERVER-46048 IndexBuildsCoordinator::inProgForCollection() allows filtering on single/two phase index builds in a collection
Diffstat (limited to 'src/mongo')
-rw-r--r-- | src/mongo/db/index_builds_coordinator.cpp | 10 | ||||
-rw-r--r-- | src/mongo/db/index_builds_coordinator.h | 1 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/mongo/db/index_builds_coordinator.cpp b/src/mongo/db/index_builds_coordinator.cpp index 2abaf9261cb..90226395a44 100644 --- a/src/mongo/db/index_builds_coordinator.cpp +++ b/src/mongo/db/index_builds_coordinator.cpp @@ -1105,6 +1105,16 @@ void IndexBuildsCoordinator::dump(std::ostream& ss) const { } } +bool IndexBuildsCoordinator::inProgForCollection(const UUID& collectionUUID, + IndexBuildProtocol protocol) const { + stdx::unique_lock<Latch> lk(_mutex); + auto indexBuildFilter = [=](const auto& replState) { + return collectionUUID == replState.collectionUUID && protocol == replState.protocol; + }; + auto indexBuilds = _filterIndexBuilds_inlock(lk, indexBuildFilter); + return !indexBuilds.empty(); +} + bool IndexBuildsCoordinator::inProgForCollection(const UUID& collectionUUID) const { stdx::unique_lock<Latch> lk(_mutex); return _collectionIndexBuilds.find(collectionUUID) != _collectionIndexBuilds.end(); diff --git a/src/mongo/db/index_builds_coordinator.h b/src/mongo/db/index_builds_coordinator.h index 20e5d34a741..a538aecf882 100644 --- a/src/mongo/db/index_builds_coordinator.h +++ b/src/mongo/db/index_builds_coordinator.h @@ -335,6 +335,7 @@ public: /** * Returns true if an index build is in progress on the specified collection. */ + bool inProgForCollection(const UUID& collectionUUID, IndexBuildProtocol protocol) const; bool inProgForCollection(const UUID& collectionUUID) const; /** |