summaryrefslogtreecommitdiff
path: root/src/mongo/db/sessions_collection_config_server.cpp
diff options
context:
space:
mode:
authorBlake Oler <blake.oler@mongodb.com>2018-04-20 11:59:06 -0400
committerBlake Oler <blake.oler@mongodb.com>2018-04-20 12:10:44 -0400
commit60cb34ea7351d25b0eb6bee947d21ada09cf438b (patch)
treeb567e1415b8dd3e2b7270e96600adf3d66b84bef /src/mongo/db/sessions_collection_config_server.cpp
parentc6e3031ef797b9e3c65de9aaf9da812c49a97e5a (diff)
downloadmongo-60cb34ea7351d25b0eb6bee947d21ada09cf438b.tar.gz
SERVER-32677 Prevent sessions periodic refresh from prematurely accessing sharding internals
Diffstat (limited to 'src/mongo/db/sessions_collection_config_server.cpp')
-rw-r--r--src/mongo/db/sessions_collection_config_server.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/mongo/db/sessions_collection_config_server.cpp b/src/mongo/db/sessions_collection_config_server.cpp
index 179687e33d4..35fc8c5c837 100644
--- a/src/mongo/db/sessions_collection_config_server.cpp
+++ b/src/mongo/db/sessions_collection_config_server.cpp
@@ -91,6 +91,11 @@ Status SessionsCollectionConfigServer::_generateIndexesIfNeeded(OperationContext
}
Status SessionsCollectionConfigServer::setupSessionsCollection(OperationContext* opCtx) {
+ // If the sharding state is not yet initialized, fail.
+ if (!Grid::get(opCtx)->isShardingInitialized()) {
+ return {ErrorCodes::ShardingStateNotInitialized, "sharding state is not yet initialized"};
+ }
+
stdx::lock_guard<stdx::mutex> lk(_mutex);
{
// Only try to set up this collection until we have done so successfully once.