summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEsha Maharishi <esha.maharishi@mongodb.com>2019-02-06 21:47:45 -0500
committerEsha Maharishi <esha.maharishi@mongodb.com>2019-02-11 10:48:45 -0500
commitd08d1e6cc029fb49b0bc137011750f7fe773e841 (patch)
tree851b579698e1098b0ac515014b825252f7ec7d1f
parenta3e64efd6da26221d7ac4198901f4859507a2992 (diff)
downloadmongo-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.cpp2
-rw-r--r--src/mongo/db/s/sharding_initialization_mongod.cpp8
-rw-r--r--src/mongo/db/s/sharding_state.cpp2
-rw-r--r--src/mongo/s/grid.cpp1
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();
}