diff options
Diffstat (limited to 'src/mongo/db/s/config/configsvr_coordinator_service.cpp')
-rw-r--r-- | src/mongo/db/s/config/configsvr_coordinator_service.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/mongo/db/s/config/configsvr_coordinator_service.cpp b/src/mongo/db/s/config/configsvr_coordinator_service.cpp index 1a30da0a9b4..b3ba449ac0f 100644 --- a/src/mongo/db/s/config/configsvr_coordinator_service.cpp +++ b/src/mongo/db/s/config/configsvr_coordinator_service.cpp @@ -93,4 +93,20 @@ ConfigsvrCoordinatorService::constructInstance(BSONObj initialState) { } } +bool ConfigsvrCoordinatorService::isAnyCoordinatorOfGivenTypeRunning( + OperationContext* opCtx, ConfigsvrCoordinatorTypeEnum coordinatorType) { + + const auto instances = getAllInstances(opCtx); + for (const auto& instance : instances) { + auto typedInstance = checked_pointer_cast<ConfigsvrCoordinator>(instance); + if (typedInstance->coordinatorType() == coordinatorType) { + if (!typedInstance->getCompletionFuture().isReady()) { + return false; + } + } + } + + return true; +} + } // namespace mongo |