summaryrefslogtreecommitdiff
path: root/src/mongo/db/s/shardsvr_rename_collection_command.cpp
diff options
context:
space:
mode:
authorJordi Serra Torrens <jordi.serra-torrens@mongodb.com>2021-04-19 16:09:25 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-04-21 06:23:22 +0000
commitc90de3e65fff76ead7b8ca4664c3f34b0c913e04 (patch)
tree1a60449271d54d5d3d3058534d6a3d1a67c34b3a /src/mongo/db/s/shardsvr_rename_collection_command.cpp
parent6f17871c955dbf98a5ffcd27dab2390d90b875d1 (diff)
downloadmongo-c90de3e65fff76ead7b8ca4664c3f34b0c913e04.tar.gz
SERVER-39468: Take distLocks on legacy renameCollection
Diffstat (limited to 'src/mongo/db/s/shardsvr_rename_collection_command.cpp')
-rw-r--r--src/mongo/db/s/shardsvr_rename_collection_command.cpp10
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",