diff options
author | A. Jesse Jiryu Davis <jesse@mongodb.com> | 2022-03-11 02:28:07 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-03-11 02:56:59 +0000 |
commit | 1f6a50edeb62aad2419c46647f066aadbc03bc79 (patch) | |
tree | 4f222527c4c49aa0c98beab30484746e5b3fa258 /src/mongo/db/repl/tenant_migration_access_blocker_util.cpp | |
parent | 736a3ebe7241a0fbec8734d66b75e74697ce42a5 (diff) | |
download | mongo-1f6a50edeb62aad2419c46647f066aadbc03bc79.tar.gz |
SERVER-64428 Fix crash in tenant_migration_donor_initial_sync_recovery.js
Diffstat (limited to 'src/mongo/db/repl/tenant_migration_access_blocker_util.cpp')
-rw-r--r-- | src/mongo/db/repl/tenant_migration_access_blocker_util.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/mongo/db/repl/tenant_migration_access_blocker_util.cpp b/src/mongo/db/repl/tenant_migration_access_blocker_util.cpp index a6efa1797c7..a68d4e5041b 100644 --- a/src/mongo/db/repl/tenant_migration_access_blocker_util.cpp +++ b/src/mongo/db/repl/tenant_migration_access_blocker_util.cpp @@ -308,15 +308,20 @@ void recoverTenantMigrationAccessBlockers(OperationContext* opCtx) { return true; } + auto protocol = doc.getProtocol().value_or(MigrationProtocolEnum::kMultitenantMigrations); auto mtab = std::make_shared<TenantMigrationDonorAccessBlocker>( opCtx->getServiceContext(), doc.getId(), doc.getTenantId().toString(), - doc.getProtocol().value_or(MigrationProtocolEnum::kMultitenantMigrations), + protocol, doc.getRecipientConnectionString().toString()); - TenantMigrationAccessBlockerRegistry::get(opCtx->getServiceContext()) - .add(doc.getTenantId(), mtab); + auto& registry = TenantMigrationAccessBlockerRegistry::get(opCtx->getServiceContext()); + if (protocol == MigrationProtocolEnum::kMultitenantMigrations) { + registry.add(doc.getTenantId(), mtab); + } else { + registry.addDonorAccessBlocker(mtab); + } switch (doc.getState()) { case TenantMigrationDonorStateEnum::kAbortingIndexBuilds: |