summaryrefslogtreecommitdiff
path: root/src/mongo
diff options
context:
space:
mode:
authorJordi Serra Torrens <jordi.serra-torrens@mongodb.com>2021-06-02 17:17:48 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-06-03 08:42:33 +0000
commitf06bafc144c77c73b273652fc41ce50b7e97cee9 (patch)
treeca597f0801ba42f73daf1e9fd35aff723d14704e /src/mongo
parent1aa41b5625ae0ac2e757f3638585e20d7d81e7ca (diff)
downloadmongo-f06bafc144c77c73b273652fc41ce50b7e97cee9.tar.gz
SERVER-57322 Invalidate filtering info on participants at the end of renameCollection
Diffstat (limited to 'src/mongo')
-rw-r--r--src/mongo/db/s/rename_collection_participant_service.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/mongo/db/s/rename_collection_participant_service.cpp b/src/mongo/db/s/rename_collection_participant_service.cpp
index f987d7d9d90..7a8b4e591f0 100644
--- a/src/mongo/db/s/rename_collection_participant_service.cpp
+++ b/src/mongo/db/s/rename_collection_participant_service.cpp
@@ -94,6 +94,15 @@ void renameOrDropTarget(OperationContext* opCtx,
}
}
+ {
+ // Clear CollectionShardingRuntime entry for the toNss collection.
+ UninterruptibleLockGuard noInterrupt(opCtx->lockState());
+ Lock::DBLock dbLock(opCtx, toNss.db(), MODE_IX);
+ Lock::CollectionLock collLock(opCtx, toNss, MODE_IX);
+ auto* csr = CollectionShardingRuntime::get(opCtx, toNss);
+ csr->clearFilteringMetadata(opCtx);
+ }
+
try {
validateAndRunRenameCollection(opCtx, fromNss, toNss, options);
} catch (ExceptionFor<ErrorCodes::NamespaceNotFound>&) {