diff options
author | Matthew Russotto <matthew.russotto@mongodb.com> | 2021-02-16 09:48:35 -0500 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-02-16 17:58:59 +0000 |
commit | 7648dc6152e8f24ca626b6cd120d9d701c37bf2d (patch) | |
tree | 07bd33f124b08a41fd7b77a27934cfaff8f6cce9 /jstests/replsets/tenant_migration_donor_current_op.js | |
parent | 9849b9f4a485c91b812ec1d068e610824cb1105e (diff) | |
download | mongo-7648dc6152e8f24ca626b6cd120d9d701c37bf2d.tar.gz |
SERVER-53552 Tenant migration donor should pass startMigrationDonorTimestamp info to recipient via recipientSyncData cmd
Diffstat (limited to 'jstests/replsets/tenant_migration_donor_current_op.js')
-rw-r--r-- | jstests/replsets/tenant_migration_donor_current_op.js | 51 |
1 files changed, 47 insertions, 4 deletions
diff --git a/jstests/replsets/tenant_migration_donor_current_op.js b/jstests/replsets/tenant_migration_donor_current_op.js index d24a9e3176c..f8d6bbf8742 100644 --- a/jstests/replsets/tenant_migration_donor_current_op.js +++ b/jstests/replsets/tenant_migration_donor_current_op.js @@ -17,10 +17,11 @@ load("jstests/replsets/libs/tenant_migration_test.js"); // An object that mirrors the donor migration states. const migrationStates = { kUninitialized: 0, - kDataSync: 1, - kBlocking: 2, - kCommitted: 3, - kAborted: 4 + kAbortingIndexBuilds: 1, + kDataSync: 2, + kBlocking: 3, + kCommitted: 4, + kAborted: 5 }; const kTenantId = 'testTenantId'; @@ -44,6 +45,43 @@ const kReadPreference = { tenantId: kTenantId, readPreference: kReadPreference }; + let fp = configureFailPoint(donorPrimary, + "pauseTenantMigrationBeforeLeavingAbortingIndexBuildsState"); + assert.commandWorked(tenantMigrationTest.startMigration(migrationOpts)); + fp.wait(); + + const res = assert.commandWorked( + donorPrimary.adminCommand({currentOp: true, desc: "tenant donor migration"})); + assert.eq(res.inprog.length, 1); + assert.eq(bsonWoCompare(res.inprog[0].instanceID.uuid, migrationId), 0); + assert.eq(bsonWoCompare(res.inprog[0].tenantId, kTenantId), 0); + assert.eq(res.inprog[0].recipientConnectionString, + tenantMigrationTest.getRecipientRst().getURL()); + assert.eq(bsonWoCompare(res.inprog[0].readPreference, kReadPreference), 0); + assert.eq(res.inprog[0].lastDurableState, migrationStates.kAbortingIndexBuilds); + assert.eq(res.inprog[0].migrationCompleted, false); + + fp.off(); + assert.commandWorked(tenantMigrationTest.waitForMigrationToComplete(migrationOpts)); + tenantMigrationTest.stop(); +})(); + +(() => { + jsTestLog("Testing currentOp output for migration in data sync state"); + const tenantMigrationTest = new TenantMigrationTest({name: jsTestName()}); + if (!tenantMigrationTest.isFeatureFlagEnabled()) { + jsTestLog("Skipping test because the tenant migrations feature flag is disabled"); + return; + } + + const donorPrimary = tenantMigrationTest.getDonorPrimary(); + + const migrationId = UUID(); + const migrationOpts = { + migrationIdString: extractUUIDFromObject(migrationId), + tenantId: kTenantId, + readPreference: kReadPreference + }; let fp = configureFailPoint(donorPrimary, "pauseTenantMigrationBeforeLeavingDataSyncState"); assert.commandWorked(tenantMigrationTest.startMigration(migrationOpts)); fp.wait(); @@ -57,6 +95,7 @@ const kReadPreference = { tenantMigrationTest.getRecipientRst().getURL()); assert.eq(bsonWoCompare(res.inprog[0].readPreference, kReadPreference), 0); assert.eq(res.inprog[0].lastDurableState, migrationStates.kDataSync); + assert(res.inprog[0].startMigrationDonorTimestamp); assert.eq(res.inprog[0].migrationCompleted, false); fp.off(); @@ -92,6 +131,7 @@ const kReadPreference = { tenantMigrationTest.getRecipientRst().getURL()); assert.eq(bsonWoCompare(res.inprog[0].readPreference, kReadPreference), 0); assert.eq(res.inprog[0].lastDurableState, migrationStates.kBlocking); + assert(res.inprog[0].startMigrationDonorTimestamp); assert(res.inprog[0].blockTimestamp); assert.eq(res.inprog[0].migrationCompleted, false); @@ -128,6 +168,7 @@ const kReadPreference = { tenantMigrationTest.getRecipientRst().getURL()); assert.eq(bsonWoCompare(res.inprog[0].readPreference, kReadPreference), 0); assert.eq(res.inprog[0].lastDurableState, migrationStates.kAborted); + assert(res.inprog[0].startMigrationDonorTimestamp); assert(res.inprog[0].blockTimestamp); assert(res.inprog[0].commitOrAbortOpTime); assert(res.inprog[0].abortReason); @@ -162,6 +203,7 @@ const kReadPreference = { tenantMigrationTest.getRecipientRst().getURL()); assert.eq(bsonWoCompare(res.inprog[0].readPreference, kReadPreference), 0); assert.eq(res.inprog[0].lastDurableState, migrationStates.kCommitted); + assert(res.inprog[0].startMigrationDonorTimestamp); assert(res.inprog[0].blockTimestamp); assert(res.inprog[0].commitOrAbortOpTime); assert.eq(res.inprog[0].migrationCompleted, false); @@ -178,6 +220,7 @@ const kReadPreference = { tenantMigrationTest.getRecipientRst().getURL()); assert.eq(bsonWoCompare(res.inprog[0].readPreference, kReadPreference), 0); assert.eq(res.inprog[0].lastDurableState, migrationStates.kCommitted); + assert(res.inprog[0].startMigrationDonorTimestamp); assert(res.inprog[0].blockTimestamp); assert(res.inprog[0].commitOrAbortOpTime); assert(res.inprog[0].expireAt); |