summaryrefslogtreecommitdiff
path: root/src/mongo/db/s/migration_coordinator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/s/migration_coordinator.cpp')
-rw-r--r--src/mongo/db/s/migration_coordinator.cpp23
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());
}