From da5f391885ef316e990bb3a13477361c5e2a9dbf Mon Sep 17 00:00:00 2001 From: Pierlauro Sciarelli Date: Tue, 26 May 2020 18:19:54 +0200 Subject: SERVER-47975 Optimize ScopedShardVersionCriticalSection in order to avoid convoy on SSV after a shardVersion change --- src/mongo/db/s/set_shard_version_command.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/mongo/db/s/set_shard_version_command.cpp') diff --git a/src/mongo/db/s/set_shard_version_command.cpp b/src/mongo/db/s/set_shard_version_command.cpp index a7c71f7f8b2..ae45d23e844 100644 --- a/src/mongo/db/s/set_shard_version_command.cpp +++ b/src/mongo/db/s/set_shard_version_command.cpp @@ -239,10 +239,16 @@ public: // Step 6 - // Note: The forceRefresh flag controls whether we make sure to do our - // own refresh or if we're okay with joining another thread - const auto status = onShardVersionMismatchNoExcept( - opCtx, nss, requestedVersion, forceRefresh /*forceRefreshFromThisThread*/); + // Note: The forceRefresh flag controls whether we make sure to do our own refresh or if + // we're okay with joining another thread + const auto status = [&] { + try { + forceShardFilteringMetadataRefresh(opCtx, nss, forceRefresh); + return Status::OK(); + } catch (const DBException& ex) { + return ex.toStatus(); + } + }(); { // Avoid using AutoGetCollection() as it returns the InvalidViewDefinition error code -- cgit v1.2.1