summaryrefslogtreecommitdiff
path: root/src/mongo/s
diff options
context:
space:
mode:
authorPaolo Polato <paolo.polato@mongodb.com>2022-07-27 08:08:54 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-07-27 09:19:21 +0000
commitd7bb81289860fb1dd7bc4424d573c7295ad36a5d (patch)
tree2480764bbd4db72fb5787d99d253d446ea402c80 /src/mongo/s
parent292bfe86c90c142e179c5c55eef32c79a1722eef (diff)
downloadmongo-d7bb81289860fb1dd7bc4424d573c7295ad36a5d.tar.gz
SERVER-67940 Raise invariant if ShardRegistry is refreshed while holding opCtx locks
Diffstat (limited to 'src/mongo/s')
-rw-r--r--src/mongo/s/client/shard_registry.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/mongo/s/client/shard_registry.cpp b/src/mongo/s/client/shard_registry.cpp
index c4b5f0f62f6..3ae0325c02f 100644
--- a/src/mongo/s/client/shard_registry.cpp
+++ b/src/mongo/s/client/shard_registry.cpp
@@ -124,6 +124,10 @@ ShardRegistry::Cache::LookupResult ShardRegistry::_lookup(OperationContext* opCt
const Cache::ValueHandle& cachedData,
const Time& timeInStore) {
invariant(key == _kSingleton);
+ // This function can potentially block for a long time on network activity, so holding of locks
+ // is disallowed.
+ invariant(!opCtx->lockState() || !opCtx->lockState()->isLocked());
+
auto lastForcedReloadIncrement = _forceReloadIncrement.load();