summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Taskov <alex.taskov@mongodb.com>2019-10-07 19:38:43 +0000
committerevergreen <evergreen@mongodb.com>2019-10-07 19:38:43 +0000
commit6e2a0a863d59213c61128690350ec010cd7a759e (patch)
tree10d1cb82e2a82751e344c2b01a40e6bbcdf4fe7b
parent2dafb9056da73883a4955726a2cbc31aa704aaee (diff)
downloadmongo-6e2a0a863d59213c61128690350ec010cd7a759e.tar.gz
SERVER-42751 Take CSRLock when observing transaction commit for migration
(cherry picked from commit cd96f9b455f63945b4ea8b772529284d8721284a)
-rw-r--r--src/mongo/db/s/migration_chunk_cloner_source_legacy.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/mongo/db/s/migration_chunk_cloner_source_legacy.cpp b/src/mongo/db/s/migration_chunk_cloner_source_legacy.cpp
index a0ca0696f16..3d5ee943804 100644
--- a/src/mongo/db/s/migration_chunk_cloner_source_legacy.cpp
+++ b/src/mongo/db/s/migration_chunk_cloner_source_legacy.cpp
@@ -163,10 +163,15 @@ void LogTransactionOperationsForShardingHandler::commit(boost::optional<Timestam
const auto& nss = stmt.getNss();
auto csr = CollectionShardingRuntime::get_UNSAFE(_svcCtx, nss);
- auto msm = MigrationSourceManager::get_UNSAFE(csr);
+
+ auto opCtx = cc().getOperationContext();
+ auto csrLock = CollectionShardingRuntime::CSRLock::lockShared(opCtx, csr);
+
+ auto msm = MigrationSourceManager::get(csr, csrLock);
if (!msm) {
continue;
}
+
auto cloner = dynamic_cast<MigrationChunkClonerSourceLegacy*>(msm->getCloner().get());
auto opType = stmt.getOpType();