summaryrefslogtreecommitdiff
path: root/src/mongo/db/s/set_shard_version_command.cpp
diff options
context:
space:
mode:
authorPierlauro Sciarelli <pierlauro.sciarelli@mongodb.com>2020-05-26 18:19:54 +0200
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-05-26 16:51:43 +0000
commitda5f391885ef316e990bb3a13477361c5e2a9dbf (patch)
tree1dc44c543acadcd602e0602709d885190baffd50 /src/mongo/db/s/set_shard_version_command.cpp
parent116acb9aa4317e0382c075285bc07b6cd3e3b190 (diff)
downloadmongo-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.cpp14
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