diff options
author | Jordi Serra Torrens <jordi.serra-torrens@mongodb.com> | 2021-06-02 17:17:48 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-06-03 08:42:33 +0000 |
commit | f06bafc144c77c73b273652fc41ce50b7e97cee9 (patch) | |
tree | ca597f0801ba42f73daf1e9fd35aff723d14704e | |
parent | 1aa41b5625ae0ac2e757f3638585e20d7d81e7ca (diff) | |
download | mongo-f06bafc144c77c73b273652fc41ce50b7e97cee9.tar.gz |
SERVER-57322 Invalidate filtering info on participants at the end of renameCollection
-rw-r--r-- | src/mongo/db/s/rename_collection_participant_service.cpp | 9 |
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>&) { |