diff options
author | Benety Goh <benety@mongodb.com> | 2019-09-11 22:02:22 +0000 |
---|---|---|
committer | evergreen <evergreen@mongodb.com> | 2019-09-11 22:02:22 +0000 |
commit | f27f82560f129f6ccd9b16fba887949ab197e678 (patch) | |
tree | 07d9130a60090068f58c6a717c2756859870c5b4 | |
parent | 1e4ecf48af15b8ee75f53601e7783e02171af982 (diff) | |
download | mongo-f27f82560f129f6ccd9b16fba887949ab197e678.tar.gz |
SERVER-43259 add IndexBuildsCoordinator::supportsTwoPhaseIndexBuild()
-rw-r--r-- | src/mongo/db/index_builds_coordinator.cpp | 18 | ||||
-rw-r--r-- | src/mongo/db/index_builds_coordinator.h | 6 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/mongo/db/index_builds_coordinator.cpp b/src/mongo/db/index_builds_coordinator.cpp index 3a0999821cc..f0afc33c0d8 100644 --- a/src/mongo/db/index_builds_coordinator.cpp +++ b/src/mongo/db/index_builds_coordinator.cpp @@ -42,6 +42,7 @@ #include "mongo/db/concurrency/write_conflict_exception.h" #include "mongo/db/curop.h" #include "mongo/db/db_raii.h" +#include "mongo/db/enable_two_phase_index_build_gen.h" #include "mongo/db/index_build_entry_helpers.h" #include "mongo/db/op_observer.h" #include "mongo/db/operation_context.h" @@ -152,6 +153,23 @@ IndexBuildsCoordinator::~IndexBuildsCoordinator() { invariant(_collectionIndexBuilds.empty()); } +bool IndexBuildsCoordinator::supportsTwoPhaseIndexBuild() const { + if (!enableTwoPhaseIndexBuild) { + return false; + } + + if (!serverGlobalParams.featureCompatibility.isVersionInitialized()) { + return false; + } + + if (serverGlobalParams.featureCompatibility.getVersion() != + ServerGlobalParams::FeatureCompatibility::Version::kFullyUpgradedTo44) { + return false; + } + + return true; +} + StatusWith<std::pair<long long, long long>> IndexBuildsCoordinator::startIndexRebuildForRecovery( OperationContext* opCtx, const NamespaceString& nss, diff --git a/src/mongo/db/index_builds_coordinator.h b/src/mongo/db/index_builds_coordinator.h index ff2f75fd288..7ab40ef1e85 100644 --- a/src/mongo/db/index_builds_coordinator.h +++ b/src/mongo/db/index_builds_coordinator.h @@ -101,6 +101,12 @@ public: static IndexBuildsCoordinator* get(OperationContext* operationContext); /** + * Returns true if two phase index builds are supported. + * This is determined by the current FCV and the server parameter 'enableTwoPhaseIndexBuild'. + */ + bool supportsTwoPhaseIndexBuild() const; + + /** * Sets up the in-memory and persisted state of the index build. A Future is returned upon which * the user can await the build result. * |