summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPierlauro Sciarelli <pierlauro.sciarelli@mongodb.com>2021-05-18 08:55:52 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-05-18 11:02:42 +0000
commit3ce2c1f02f4961c024ec52f1a9f27fd6263a5aac (patch)
treef66fd614bb6611a0f5375c7fe7b035664208eda6 /src
parent593376ad56a8f759faf7f8ad743cbbff5dbf1cf1 (diff)
downloadmongo-3ce2c1f02f4961c024ec52f1a9f27fd6263a5aac.tar.gz
SERVER-57021 Release locks before DB refresh in rename coordinator
Diffstat (limited to 'src')
-rw-r--r--src/mongo/db/s/rename_collection_coordinator.cpp23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/mongo/db/s/rename_collection_coordinator.cpp b/src/mongo/db/s/rename_collection_coordinator.cpp
index d5dbc59f41e..4850ba2f196 100644
--- a/src/mongo/db/s/rename_collection_coordinator.cpp
+++ b/src/mongo/db/s/rename_collection_coordinator.cpp
@@ -186,20 +186,23 @@ ExecutorFuture<void> RenameCollectionCoordinator::_runImpl(
_doc.setOptShardedCollInfo(optSourceCollType);
_doc.setSourceUUID(optSourceCollType->getUuid());
} else {
- Lock::DBLock dbLock(opCtx, fromNss.db(), MODE_IS);
- Lock::CollectionLock collLock(opCtx, fromNss, MODE_IS);
- const auto sourceCollPtr =
- CollectionCatalog::get(opCtx)->lookupCollectionByNamespace(opCtx, fromNss);
-
- uassert(ErrorCodes::NamespaceNotFound,
- str::stream() << "Collection " << fromNss << " doesn't exist.",
- sourceCollPtr);
+ {
+ Lock::DBLock dbLock(opCtx, fromNss.db(), MODE_IS);
+ Lock::CollectionLock collLock(opCtx, fromNss, MODE_IS);
+ const auto sourceCollPtr =
+ CollectionCatalog::get(opCtx)->lookupCollectionByNamespace(opCtx,
+ fromNss);
+
+ uassert(ErrorCodes::NamespaceNotFound,
+ str::stream() << "Collection " << fromNss << " doesn't exist.",
+ sourceCollPtr);
+
+ _doc.setSourceUUID(sourceCollPtr->uuid());
+ }
if (fromNss.db() != toNss.db()) {
sharding_ddl_util::checkDbPrimariesOnTheSameShard(opCtx, fromNss, toNss);
}
-
- _doc.setSourceUUID(sourceCollPtr->uuid());
}
// Make sure the target namespace is not a view