summaryrefslogtreecommitdiff
path: root/jstests/replsets/tenant_migration_donor_current_op.js
diff options
context:
space:
mode:
authorMatthew Russotto <matthew.russotto@mongodb.com>2021-02-16 09:48:35 -0500
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-02-16 17:58:59 +0000
commit7648dc6152e8f24ca626b6cd120d9d701c37bf2d (patch)
tree07bd33f124b08a41fd7b77a27934cfaff8f6cce9 /jstests/replsets/tenant_migration_donor_current_op.js
parent9849b9f4a485c91b812ec1d068e610824cb1105e (diff)
downloadmongo-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.js51
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);