diff options
author | Pierlauro Sciarelli <pierlauro.sciarelli@mongodb.com> | 2020-05-26 18:19:54 +0200 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-05-26 16:51:43 +0000 |
commit | da5f391885ef316e990bb3a13477361c5e2a9dbf (patch) | |
tree | 1dc44c543acadcd602e0602709d885190baffd50 /src/mongo/db/s/set_shard_version_command.cpp | |
parent | 116acb9aa4317e0382c075285bc07b6cd3e3b190 (diff) | |
download | mongo-da5f391885ef316e990bb3a13477361c5e2a9dbf.tar.gz |
SERVER-47975 Optimize ScopedShardVersionCriticalSection in order to avoid convoy on SSV after a shardVersion change
Diffstat (limited to 'src/mongo/db/s/set_shard_version_command.cpp')
-rw-r--r-- | src/mongo/db/s/set_shard_version_command.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
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 |