From cbe3968ce01e4a749756422893b7274100675705 Mon Sep 17 00:00:00 2001 From: Ben Caimano Date: Fri, 29 Mar 2019 12:01:50 -0400 Subject: SERVER-40387 Shutdown shard registry after catalog cache --- src/mongo/db/s/sharding_initialization_mongod.cpp | 1 + src/mongo/s/server.cpp | 4 ++++ src/mongo/s/sharding_mongod_test_fixture.cpp | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/src/mongo/db/s/sharding_initialization_mongod.cpp b/src/mongo/db/s/sharding_initialization_mongod.cpp index d7897df0c79..c331d15c3aa 100644 --- a/src/mongo/db/s/sharding_initialization_mongod.cpp +++ b/src/mongo/db/s/sharding_initialization_mongod.cpp @@ -165,6 +165,7 @@ void ShardingInitializationMongoD::shutDown(OperationContext* opCtx) { grid->getExecutorPool()->shutdownAndJoin(); grid->catalogClient()->shutDown(opCtx); + grid->shardRegistry()->shutdown(); } bool ShardingInitializationMongoD::initializeShardingAwarenessIfNeeded(OperationContext* opCtx) { diff --git a/src/mongo/s/server.cpp b/src/mongo/s/server.cpp index acf643ad1c7..0dd4621f8c6 100644 --- a/src/mongo/s/server.cpp +++ b/src/mongo/s/server.cpp @@ -230,6 +230,10 @@ void cleanupTask(ServiceContext* serviceContext) { catalog->shutDown(opCtx); } + if (auto shardRegistry = Grid::get(opCtx)->shardRegistry()) { + shardRegistry->shutdown(); + } + #if __has_feature(address_sanitizer) // When running under address sanitizer, we get false positive leaks due to disorder around // the lifecycle of a connection and request. When we are running under ASAN, we try a lot diff --git a/src/mongo/s/sharding_mongod_test_fixture.cpp b/src/mongo/s/sharding_mongod_test_fixture.cpp index 0b2a1a2711e..06081591f0c 100644 --- a/src/mongo/s/sharding_mongod_test_fixture.cpp +++ b/src/mongo/s/sharding_mongod_test_fixture.cpp @@ -297,6 +297,10 @@ void ShardingMongodTestFixture::tearDown() { Grid::get(operationContext())->catalogClient()->shutDown(operationContext()); } + if (Grid::get(operationContext())->shardRegistry()) { + Grid::get(operationContext())->shardRegistry()->shutdown(); + } + Grid::get(operationContext())->clearForUnitTests(); _opCtx.reset(); -- cgit v1.2.1