diff options
-rw-r--r-- | src/mongo/db/s/shardsvr_rename_collection_command.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/mongo/db/s/shardsvr_rename_collection_command.cpp b/src/mongo/db/s/shardsvr_rename_collection_command.cpp index 7274696e8f1..83d861e6069 100644 --- a/src/mongo/db/s/shardsvr_rename_collection_command.cpp +++ b/src/mongo/db/s/shardsvr_rename_collection_command.cpp @@ -36,6 +36,7 @@ #include "mongo/db/commands.h" #include "mongo/db/db_raii.h" #include "mongo/db/s/collection_sharding_state.h" +#include "mongo/db/s/dist_lock_manager.h" #include "mongo/db/s/rename_collection_coordinator.h" #include "mongo/db/s/rename_collection_coordinator_document_gen.h" #include "mongo/db/s/sharding_ddl_50_upgrade_downgrade.h" @@ -69,6 +70,15 @@ RenameCollectionResponse renameCollectionLegacy(OperationContext* opCtx, const NamespaceString& fromNss) { const auto& toNss = request.getTo(); + auto fromDbDistLock = uassertStatusOK(DistLockManager::get(opCtx)->lock( + opCtx, fromNss.db(), "renameCollection", DistLockManager::kDefaultLockTimeout)); + + auto fromCollDistLock = uassertStatusOK(DistLockManager::get(opCtx)->lock( + opCtx, fromNss.ns(), "renameCollection", DistLockManager::kDefaultLockTimeout)); + + auto toCollDistLock = uassertStatusOK(DistLockManager::get(opCtx)->lock( + opCtx, toNss.ns(), "renameCollection", DistLockManager::kDefaultLockTimeout)); + // Make sure that source and target collection are not sharded uassert(ErrorCodes::IllegalOperation, str::stream() << "source namespace '" << fromNss << "' must not be sharded", |