diff options
author | Esha Maharishi <esha.maharishi@mongodb.com> | 2019-02-06 21:47:45 -0500 |
---|---|---|
committer | Esha Maharishi <esha.maharishi@mongodb.com> | 2019-02-11 10:48:45 -0500 |
commit | d08d1e6cc029fb49b0bc137011750f7fe773e841 (patch) | |
tree | 851b579698e1098b0ac515014b825252f7ec7d1f | |
parent | a3e64efd6da26221d7ac4198901f4859507a2992 (diff) | |
download | mongo-d08d1e6cc029fb49b0bc137011750f7fe773e841.tar.gz |
SERVER-37339 Sharding state is set to initialized on Grid before sharding components are fully initialized
-rw-r--r-- | src/mongo/db/db.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/s/sharding_initialization_mongod.cpp | 8 | ||||
-rw-r--r-- | src/mongo/db/s/sharding_state.cpp | 2 | ||||
-rw-r--r-- | src/mongo/s/grid.cpp | 1 |
4 files changed, 6 insertions, 7 deletions
diff --git a/src/mongo/db/db.cpp b/src/mongo/db/db.cpp index 635f13bbd19..ea1f0d3713c 100644 --- a/src/mongo/db/db.cpp +++ b/src/mongo/db/db.cpp @@ -967,6 +967,8 @@ ExitCode _initAndListen(int listenPort) { ShardingCatalogManager::create( startupOpCtx->getServiceContext(), makeShardingTaskExecutor(executor::makeNetworkInterface("AddShard-TaskExecutor"))); + + Grid::get(startupOpCtx.get())->setShardingInitialized(); } else if (replSettings.usingReplSets()) { // standalone replica set auto keysCollectionClient = stdx::make_unique<KeysCollectionClientDirect>(); auto keyManager = std::make_shared<KeysCollectionManagerSharding>( diff --git a/src/mongo/db/s/sharding_initialization_mongod.cpp b/src/mongo/db/s/sharding_initialization_mongod.cpp index c807144cdc8..7e034e53e54 100644 --- a/src/mongo/db/s/sharding_initialization_mongod.cpp +++ b/src/mongo/db/s/sharding_initialization_mongod.cpp @@ -110,7 +110,7 @@ Status initializeGlobalShardingStateForMongod(OperationContext* opCtx, validator->stopKeyManager(); } - Status initStatus = initializeGlobalShardingState( + return initializeGlobalShardingState( opCtx, configCS, distLockProcessId, @@ -127,12 +127,6 @@ Status initializeGlobalShardingStateForMongod(OperationContext* opCtx, // We only need one task executor here because sharding task executors aren't used for user // queries in mongod. 1); - - if (initStatus.isOK()) { - Grid::get(opCtx)->setShardingInitialized(); - } - - return initStatus; } } // namespace mongo diff --git a/src/mongo/db/s/sharding_state.cpp b/src/mongo/db/s/sharding_state.cpp index 959a58ee790..9cdce40f044 100644 --- a/src/mongo/db/s/sharding_state.cpp +++ b/src/mongo/db/s/sharding_state.cpp @@ -323,6 +323,8 @@ Status ShardingState::initializeFromShardIdentity(OperationContext* opCtx, _chunkSplitter->setReplicaSetMode(isStandaloneOrPrimary); + Grid::get(opCtx)->setShardingInitialized(); + log() << "initialized sharding components for " << (isStandaloneOrPrimary ? "primary" : "secondary") << " node."; _setInitializationState(InitializationState::kInitialized); diff --git a/src/mongo/s/grid.cpp b/src/mongo/s/grid.cpp index 346ccd487fa..b81f6565e47 100644 --- a/src/mongo/s/grid.cpp +++ b/src/mongo/s/grid.cpp @@ -142,6 +142,7 @@ void Grid::clearForUnitTests() { _balancerConfig.reset(); _executorPool.reset(); _network = nullptr; + _shardingInitialized.store(false); _configOpTime = repl::OpTime(); } |