diff options
author | Esha Maharishi <esha.maharishi@mongodb.com> | 2020-01-24 02:34:42 +0000 |
---|---|---|
committer | evergreen <evergreen@mongodb.com> | 2020-01-24 02:34:42 +0000 |
commit | e791a2ea966bb302ff180dd4538d87c078e74747 (patch) | |
tree | 42f37fe0222fcf47acb5bd92f5d451799f193b83 /src/mongo/db/s/migration_coordinator.cpp | |
parent | 281973f2c819cd8dcca2b10c0637091ffdcff2c3 (diff) | |
download | mongo-e791a2ea966bb302ff180dd4538d87c078e74747.tar.gz |
SERVER-44162 Resume coordinating active migrations on stepup
Diffstat (limited to 'src/mongo/db/s/migration_coordinator.cpp')
-rw-r--r-- | src/mongo/db/s/migration_coordinator.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/mongo/db/s/migration_coordinator.cpp b/src/mongo/db/s/migration_coordinator.cpp index 38e2d47b5c4..038b23318a2 100644 --- a/src/mongo/db/s/migration_coordinator.cpp +++ b/src/mongo/db/s/migration_coordinator.cpp @@ -42,6 +42,15 @@ namespace mongo { MONGO_FAIL_POINT_DEFINE(disableWritingPendingRangeDeletionEntries); +MONGO_FAIL_POINT_DEFINE(hangBeforeMakingCommitDecisionDurable); +MONGO_FAIL_POINT_DEFINE(hangBeforeMakingAbortDecisionDurable); + +MONGO_FAIL_POINT_DEFINE(hangBeforeSendingCommitDecision); +MONGO_FAIL_POINT_DEFINE(hangBeforeSendingAbortDecision); + +MONGO_FAIL_POINT_DEFINE(hangBeforeForgettingMigrationAfterCommitDecision); +MONGO_FAIL_POINT_DEFINE(hangBeforeForgettingMigrationAfterAbortDecision); + namespace migrationutil { MigrationCoordinator::MigrationCoordinator(UUID migrationId, @@ -103,18 +112,24 @@ void MigrationCoordinator::completeMigration(OperationContext* opCtx) { switch (*_decision) { case Decision::kAborted: _abortMigrationOnDonorAndRecipient(opCtx); + hangBeforeForgettingMigrationAfterAbortDecision.pauseWhileSet(); break; case Decision::kCommitted: _commitMigrationOnDonorAndRecipient(opCtx); + hangBeforeForgettingMigrationAfterCommitDecision.pauseWhileSet(); break; } - _forgetMigration(opCtx); + forgetMigration(opCtx); } void MigrationCoordinator::_commitMigrationOnDonorAndRecipient(OperationContext* opCtx) { + hangBeforeMakingCommitDecisionDurable.pauseWhileSet(); + LOG(0) << _logPrefix() << "Making commit decision durable"; migrationutil::persistCommitDecision(opCtx, _migrationInfo.getId()); + hangBeforeSendingCommitDecision.pauseWhileSet(); + LOG(0) << _logPrefix() << "Deleting range deletion task on recipient"; migrationutil::deleteRangeDeletionTaskOnRecipient( opCtx, _migrationInfo.getRecipientShardId(), _migrationInfo.getId()); @@ -124,9 +139,13 @@ void MigrationCoordinator::_commitMigrationOnDonorAndRecipient(OperationContext* } void MigrationCoordinator::_abortMigrationOnDonorAndRecipient(OperationContext* opCtx) { + hangBeforeMakingAbortDecisionDurable.pauseWhileSet(); + LOG(0) << _logPrefix() << "Making abort decision durable"; migrationutil::persistAbortDecision(opCtx, _migrationInfo.getId()); + hangBeforeSendingAbortDecision.pauseWhileSet(); + LOG(0) << _logPrefix() << "Deleting range deletion task on donor"; migrationutil::deleteRangeDeletionTaskLocally(opCtx, _migrationInfo.getId()); @@ -135,7 +154,7 @@ void MigrationCoordinator::_abortMigrationOnDonorAndRecipient(OperationContext* opCtx, _migrationInfo.getRecipientShardId(), _migrationInfo.getId()); } -void MigrationCoordinator::_forgetMigration(OperationContext* opCtx) { +void MigrationCoordinator::forgetMigration(OperationContext* opCtx) { LOG(0) << _logPrefix() << "Deleting migration coordinator document"; migrationutil::deleteMigrationCoordinatorDocumentLocally(opCtx, _migrationInfo.getId()); } |