diff options
4 files changed, 21 insertions, 16 deletions
diff --git a/jstests/libs/chunk_manipulation_util.js b/jstests/libs/chunk_manipulation_util.js index 8ad487667cf..9408ef7a544 100644 --- a/jstests/libs/chunk_manipulation_util.js +++ b/jstests/libs/chunk_manipulation_util.js @@ -115,8 +115,8 @@ function proceedToMoveChunkStep( shardConnection, stepNumber ) { function configureMoveChunkFailPoint( shardConnection, stepNumber, mode ) { - assert( stepNumber >= 1); - assert( stepNumber <= 6 ); + assert.between(migrateStepNames.copiedIndexes, stepNumber, + migrateStepNames.done, "incorrect stepNumber", true); var admin = shardConnection.getDB( 'admin' ); admin.runCommand({ configureFailPoint: 'moveChunkHangAtStep' + stepNumber, mode: mode }); @@ -130,8 +130,8 @@ function waitForMoveChunkStep( shardConnection, stepNumber ) { var searchString = 'step ' + stepNumber, admin = shardConnection.getDB( 'admin' ); - assert( stepNumber >= 1); - assert( stepNumber <= 6 ); + assert.between(migrateStepNames.copiedIndexes, stepNumber, + migrateStepNames.done, "incorrect stepNumber", true); var msg = ( 'moveChunk on ' + shardConnection.shardName @@ -156,8 +156,9 @@ var migrateStepNames = { copiedIndexes: 1, deletedPriorDataInRange: 2, cloned: 3, - transferredMods: 4, // About to enter steady state. - done: 5 + catchup: 4, // About to enter steady state. + steady: 5, + done: 6 }; // @@ -186,8 +187,9 @@ function proceedToMigrateStep( shardConnection, stepNumber ) { } function configureMigrateFailPoint( shardConnection, stepNumber, mode ) { - assert( stepNumber >= 1); - assert( stepNumber <= 5 ); + assert.between( migrateStepNames.copiedIndexes, stepNumber, + migrateStepNames.done, "incorrect stepNumber", true); + var admin = shardConnection.getDB( 'admin' ); admin.runCommand({ configureFailPoint: 'migrateThreadHangAtStep' + stepNumber, mode: mode }); @@ -200,8 +202,8 @@ function waitForMigrateStep( shardConnection, stepNumber ) { var searchString = 'step ' + stepNumber, admin = shardConnection.getDB( 'admin' ); - assert( stepNumber >= 1); - assert( stepNumber <= 5); + assert.between(migrateStepNames.copiedIndexes, stepNumber, + migrateStepNames.done, "incorrect stepNumber", true); var msg = ( 'Migrate thread on ' + shardConnection.shardName diff --git a/jstests/sharding/cleanup_orphaned_cmd_during_movechunk.js b/jstests/sharding/cleanup_orphaned_cmd_during_movechunk.js index a4356524b09..1948a4bed5c 100644 --- a/jstests/sharding/cleanup_orphaned_cmd_during_movechunk.js +++ b/jstests/sharding/cleanup_orphaned_cmd_during_movechunk.js @@ -99,9 +99,9 @@ assert.eq(21, donorColl.count()); // Recipient transfers this modification. jsTest.log('Let migrate proceed to transferredMods'); -pauseMigrateAtStep(recipient, migrateStepNames.transferredMods); +pauseMigrateAtStep(recipient, migrateStepNames.catchup); unpauseMigrateAtStep(recipient, migrateStepNames.cloned); -waitForMigrateStep(recipient, migrateStepNames.transferredMods); +waitForMigrateStep(recipient, migrateStepNames.catchup); jsTest.log('Done letting migrate proceed to transferredMods'); assert.eq( @@ -129,7 +129,7 @@ assert.eq(21, recipientColl.count()); // Recipient has been waiting for donor to call _recvChunkCommit. pauseMoveChunkAtStep(donor, moveChunkStepNames.committed); unpauseMoveChunkAtStep(donor, moveChunkStepNames.startedMoveChunk); -unpauseMigrateAtStep(recipient, migrateStepNames.transferredMods); +proceedToMigrateStep(recipient, migrateStepNames.steady); proceedToMigrateStep(recipient, migrateStepNames.done); // Create orphans. diff --git a/jstests/sharding/cleanup_orphaned_cmd_during_movechunk_hashed.js b/jstests/sharding/cleanup_orphaned_cmd_during_movechunk_hashed.js index fdc6d6c8dff..d4d523bbd06 100644 --- a/jstests/sharding/cleanup_orphaned_cmd_during_movechunk_hashed.js +++ b/jstests/sharding/cleanup_orphaned_cmd_during_movechunk_hashed.js @@ -84,7 +84,7 @@ var joinMoveChunk = moveChunkParallel( waitForMoveChunkStep(donor, moveChunkStepNames.startedMoveChunk); waitForMigrateStep(recip, migrateStepNames.cloned); -proceedToMigrateStep(recip, migrateStepNames.transferredMods); +proceedToMigrateStep(recip, migrateStepNames.catchup); // recipient has run _recvChunkStart and begun its migration thread; // 'doc' has been cloned and chunkWithDoc is noted as 'pending' on recipient. @@ -104,7 +104,7 @@ assert.eq(1, recipColl.count()); // recip has been waiting for donor to call _recvChunkCommit. pauseMoveChunkAtStep(donor, moveChunkStepNames.committed); unpauseMoveChunkAtStep(donor, moveChunkStepNames.startedMoveChunk); -unpauseMigrateAtStep(recip, migrateStepNames.transferredMods); +proceedToMigrateStep(recip, migrateStepNames.steady); proceedToMigrateStep(recip, migrateStepNames.done); // cleanupOrphaned removes migrated data from donor. The donor would diff --git a/src/mongo/db/s/migration_destination_manager.cpp b/src/mongo/db/s/migration_destination_manager.cpp index 5601aa11eec..deefb866bdb 100644 --- a/src/mongo/db/s/migration_destination_manager.cpp +++ b/src/mongo/db/s/migration_destination_manager.cpp @@ -198,6 +198,7 @@ MONGO_FP_DECLARE(migrateThreadHangAtStep2); MONGO_FP_DECLARE(migrateThreadHangAtStep3); MONGO_FP_DECLARE(migrateThreadHangAtStep4); MONGO_FP_DECLARE(migrateThreadHangAtStep5); +MONGO_FP_DECLARE(migrateThreadHangAtStep6); MigrationDestinationManager::MigrationDestinationManager() = default; @@ -418,7 +419,7 @@ void MigrationDestinationManager::_migrateDriver(OperationContext* txn, << " for collection " << ns << " from " << fromShard << " at epoch " << epoch.toString(); string errmsg; - MoveTimingHelper timing(txn, "to", ns, min, max, 5 /* steps */, &errmsg, "", ""); + MoveTimingHelper timing(txn, "to", ns, min, max, 6 /* steps */, &errmsg, "", ""); ScopedDbConnection conn(fromShard); @@ -840,6 +841,8 @@ void MigrationDestinationManager::_migrateDriver(OperationContext* txn, } setState(DONE); + timing.done(6); + MONGO_FAIL_POINT_PAUSE_WHILE_SET(migrateThreadHangAtStep6); conn.done(); } |