summaryrefslogtreecommitdiff
path: root/src/mongo
diff options
context:
space:
mode:
authorBenety Goh <benety@mongodb.com>2020-03-10 14:47:38 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-03-10 19:46:47 +0000
commit588531744dcb3da7ab811da297cb53d62a21add6 (patch)
tree7f03da69782d7d5f25dafd291c1324291a7ff272 /src/mongo
parentdc895c373b8e48113ce7505595b05011dd02f6e4 (diff)
downloadmongo-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.cpp10
-rw-r--r--src/mongo/db/index_builds_coordinator.h1
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;
/**