summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRandolph Tan <randolph@10gen.com>2023-05-17 17:36:16 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-05-17 19:38:40 +0000
commite90dcb18de438b6b6ab02b2c921463fd35b866cb (patch)
tree745b158e535b35e41524faa8550d40eb20658dc4
parentdaf7bd5ff960050582f48aeda84b782cd013d825 (diff)
downloadmongo-e90dcb18de438b6b6ab02b2c921463fd35b866cb.tar.gz
SERVER-76546 _migrateClone can deadlock with prepared transactions on secondaries
-rw-r--r--src/mongo/db/s/migration_chunk_cloner_source_legacy_commands.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/mongo/db/s/migration_chunk_cloner_source_legacy_commands.cpp b/src/mongo/db/s/migration_chunk_cloner_source_legacy_commands.cpp
index b623db6b16d..8bf95705b43 100644
--- a/src/mongo/db/s/migration_chunk_cloner_source_legacy_commands.cpp
+++ b/src/mongo/db/s/migration_chunk_cloner_source_legacy_commands.cpp
@@ -76,6 +76,11 @@ public:
str::stream() << "Collection " << nss->toStringForErrorMsg() << " does not exist",
_autoColl->getCollection());
+ uassert(ErrorCodes::NotWritablePrimary,
+ "No longer primary when trying to acquire active migrate cloner",
+ opCtx->writesAreReplicated() &&
+ repl::ReplicationCoordinator::get(opCtx)->canAcceptWritesFor(opCtx, *nss));
+
{
const auto scopedCsr =
CollectionShardingRuntime::assertCollectionLockedAndAcquireShared(opCtx, *nss);