diff options
author | Alex Taskov <alex.taskov@mongodb.com> | 2019-10-07 19:38:43 +0000 |
---|---|---|
committer | evergreen <evergreen@mongodb.com> | 2019-10-07 19:38:43 +0000 |
commit | 6e2a0a863d59213c61128690350ec010cd7a759e (patch) | |
tree | 10d1cb82e2a82751e344c2b01a40e6bbcdf4fe7b | |
parent | 2dafb9056da73883a4955726a2cbc31aa704aaee (diff) | |
download | mongo-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.cpp | 7 |
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(); |