summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Broadstone <mbroadst@mongodb.com>2023-01-04 16:01:17 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-01-04 16:40:22 +0000
commit2d1d04a9b387538a23de3f78006972992b0258ad (patch)
tree788eaca256041f158cb0238898654e34a3fe53ce
parente9c0261130bd3e06ab5d206c6b6632ab96758733 (diff)
downloadmongo-2d1d04a9b387538a23de3f78006972992b0258ad.tar.gz
SERVER-72286 Convert all shard split tests to use ES modules
-rw-r--r--.eslintrc.yml4
-rw-r--r--jstests/serverless/libs/shard_split_test.js58
-rw-r--r--jstests/serverless/serverless_reject_multiple_ops_access_blocker.js4
-rw-r--r--jstests/serverless/serverless_reject_multiple_ops_migration_after_garbage_collection.js9
-rw-r--r--jstests/serverless/serverless_reject_multiple_ops_migration_different_tenant.js8
-rw-r--r--jstests/serverless/serverless_reject_multiple_ops_migration_donor.js9
-rw-r--r--jstests/serverless/serverless_reject_multiple_ops_migration_donor_retry.js8
-rw-r--r--jstests/serverless/serverless_reject_multiple_ops_migration_fail.js8
-rw-r--r--jstests/serverless/serverless_reject_multiple_ops_migration_fail_on_recipient.js8
-rw-r--r--jstests/serverless/serverless_reject_multiple_ops_migration_recipient_retry.js8
-rw-r--r--jstests/serverless/serverless_reject_multiple_ops_split.js4
-rw-r--r--jstests/serverless/serverless_reject_multiple_ops_split_retry.js4
-rw-r--r--jstests/serverless/serverless_reject_multiple_ops_split_success.js4
-rw-r--r--jstests/serverless/shard_split_abort_during_upgrade_downgrade.js7
-rw-r--r--jstests/serverless/shard_split_abort_forget_retry.js7
-rw-r--r--jstests/serverless/shard_split_abort_on_setfcv.js6
-rw-r--r--jstests/serverless/shard_split_abort_while_committing.js3
-rw-r--r--jstests/serverless/shard_split_basic_test.js10
-rw-r--r--jstests/serverless/shard_split_buildindex.js5
-rw-r--r--jstests/serverless/shard_split_change_collections_test.js11
-rw-r--r--jstests/serverless/shard_split_concurrent_bulk_writes.js7
-rw-r--r--jstests/serverless/shard_split_concurrent_reads_on_donor_aborted.js9
-rw-r--r--jstests/serverless/shard_split_concurrent_reads_on_donor_blocking.js7
-rw-r--r--jstests/serverless/shard_split_concurrent_reads_on_donor_blocking_then_aborted.js13
-rw-r--r--jstests/serverless/shard_split_concurrent_reads_on_donor_blocking_then_committed.js13
-rw-r--r--jstests/serverless/shard_split_concurrent_reads_on_donor_committed.js7
-rw-r--r--jstests/serverless/shard_split_concurrent_reconfig.js6
-rw-r--r--jstests/serverless/shard_split_concurrent_state_doc_removal_and_stepdown.js7
-rw-r--r--jstests/serverless/shard_split_concurrent_writes_on_donor_aborted.js8
-rw-r--r--jstests/serverless/shard_split_concurrent_writes_on_donor_blocking.js8
-rw-r--r--jstests/serverless/shard_split_concurrent_writes_on_donor_committed.js9
-rw-r--r--jstests/serverless/shard_split_donor_current_op.js6
-rw-r--r--jstests/serverless/shard_split_drop_state_doc_collection_aborted.js6
-rw-r--r--jstests/serverless/shard_split_drop_state_doc_collection_blocking.js6
-rw-r--r--jstests/serverless/shard_split_drop_state_doc_collection_committed.js6
-rw-r--r--jstests/serverless/shard_split_drop_state_doc_collection_decision_fullfilled.js6
-rw-r--r--jstests/serverless/shard_split_ensure_split_outcome_visibility_for_blocked_writes.js7
-rw-r--r--jstests/serverless/shard_split_invalid_inputs.js7
-rw-r--r--jstests/serverless/shard_split_on_clustered_collections.js7
-rw-r--r--jstests/serverless/shard_split_performance_test.js3
-rw-r--r--jstests/serverless/shard_split_read_your_own_writes.js6
-rw-r--r--jstests/serverless/shard_split_recipient_removes_access_blockers.js7
-rw-r--r--jstests/serverless/shard_split_recipient_removes_serverless_lock.js7
-rw-r--r--jstests/serverless/shard_split_rejects_multiple_ops.js8
-rw-r--r--jstests/serverless/shard_split_remove_split_config_after_decision.js3
-rw-r--r--jstests/serverless/shard_split_shutdown_while_blocking_reads.js7
-rw-r--r--jstests/serverless/shard_split_startup_recovery_aborted.js15
-rw-r--r--jstests/serverless/shard_split_startup_recovery_blocking.js15
-rw-r--r--jstests/serverless/shard_split_startup_recovery_committed.js15
-rw-r--r--jstests/serverless/shard_split_startup_recovery_initially_aborted.js15
-rw-r--r--jstests/serverless/shard_split_tenant_access_blocking.js11
-rw-r--r--jstests/serverless/shard_split_test_max_bson_limit.js5
-rw-r--r--jstests/serverless/shard_split_timeseries_collections.js7
-rw-r--r--jstests/serverless/shard_split_unblock_reads_and_writes_on_completion.js9
-rw-r--r--jstests/serverless/shard_split_wait_for_block_timestamp.js12
-rw-r--r--jstests/serverless/shard_split_write_during_aborted_split.js6
-rw-r--r--jstests/serverless/shard_split_write_during_shard_split.js6
-rw-r--r--jstests/serverless/shard_split_write_during_split_stepdown.js6
-rw-r--r--src/mongo/scripting/mozjs/implscope.cpp9
-rw-r--r--src/mongo/scripting/mozjs/implscope.h2
-rw-r--r--src/mongo/scripting/mozjs/module_loader.cpp14
61 files changed, 195 insertions, 323 deletions
diff --git a/.eslintrc.yml b/.eslintrc.yml
index ff14b3bb5e5..575cde0bef7 100644
--- a/.eslintrc.yml
+++ b/.eslintrc.yml
@@ -1,9 +1,9 @@
env:
- es2019: true
+ es2020: true
mongo: true
parserOptions:
- ecmaVersion: 2019
+ ecmaVersion: 2020
sourceType: "module"
rules:
diff --git a/jstests/serverless/libs/shard_split_test.js b/jstests/serverless/libs/shard_split_test.js
index a27865e7b55..bc153ef8bcb 100644
--- a/jstests/serverless/libs/shard_split_test.js
+++ b/jstests/serverless/libs/shard_split_test.js
@@ -3,22 +3,22 @@ load("jstests/replsets/rslib.js");
load("jstests/libs/parallelTester.js");
load("jstests/libs/uuid_util.js");
-const runForgetShardSplitAsync = function(primaryHost, migrationIdString) {
+function runForgetShardSplitAsync(primaryHost, migrationIdString) {
const primary = new Mongo(primaryHost);
return primary.adminCommand({forgetShardSplit: 1, migrationId: UUID(migrationIdString)});
-};
+}
-const runAbortShardSplitAsync = function(primaryHost, migrationIdString) {
+function runAbortShardSplitAsync(primaryHost, migrationIdString) {
const primary = new Mongo(primaryHost);
return primary.adminCommand({abortShardSplit: 1, migrationId: UUID(migrationIdString)});
-};
+}
/*
* Connects to a replica set and runs write operation, returning the results.
* @param {rstArgs} replicaSetArgs for the replica set to connect to.
* @param {tenantIds} perform a write operation for each tenantId.
*/
-const doWriteOperations = function(rstArgs, tenantIds) {
+export function doWriteOperations(rstArgs, tenantIds) {
load("jstests/replsets/rslib.js");
const donorRst = createRst(rstArgs, true);
@@ -49,9 +49,9 @@ const doWriteOperations = function(rstArgs, tenantIds) {
});
return writeResults;
-};
+}
-const addRecipientNodes = function({rst, numNodes, recipientTagName}) {
+export function addRecipientNodes({rst, numNodes, recipientTagName}) {
numNodes = numNodes || 3; // default to three nodes
const recipientNodes = [];
const options = TenantMigrationUtil.makeX509OptionsForTest();
@@ -86,23 +86,22 @@ const addRecipientNodes = function({rst, numNodes, recipientTagName}) {
recipientNodes.forEach(node => rst.waitForState(node, ReplSetTest.State.SECONDARY));
return recipientNodes;
-};
+}
/**
* Convert arguments passed through the Thread interface and calls runShardSplitCommand.
*/
-const runCommitSplitThreadWrapper = function(rstArgs,
- migrationIdString,
- tenantIds,
- recipientTagName,
- recipientSetName,
- retryOnRetryableErrors,
- enableDonorStartMigrationFsync) {
+async function runCommitSplitThreadWrapper(rstArgs,
+ migrationIdString,
+ tenantIds,
+ recipientTagName,
+ recipientSetName,
+ retryOnRetryableErrors,
+ enableDonorStartMigrationFsync) {
load("jstests/replsets/rslib.js");
- load("jstests/serverless/libs/shard_split_test.js");
+ const {runShardSplitCommand} = await import("jstests/serverless/libs/shard_split_test.js");
const donorRst = createRst(rstArgs, true);
-
const commitShardSplitCmdObj = {
commitShardSplit: 1,
migrationId: UUID(migrationIdString),
@@ -115,7 +114,7 @@ const runCommitSplitThreadWrapper = function(rstArgs,
return runShardSplitCommand(
donorRst, commitShardSplitCmdObj, retryOnRetryableErrors, enableDonorStartMigrationFsync);
-};
+}
/*
* Wait for state document garbage collection by polling for when the document has been removed
@@ -123,7 +122,7 @@ const runCommitSplitThreadWrapper = function(rstArgs,
* @param {migrationId} id that was used for the commitShardSplit command.
* @param {tenantIds} tenant ids of the shard split.
*/
-const waitForGarbageCollectionForSplit = function(donorNodes, migrationId, tenantIds) {
+export function waitForGarbageCollectionForSplit(donorNodes, migrationId, tenantIds) {
jsTestLog("Wait for garbage collection");
assert.soon(() => donorNodes.every(node => {
const donorDocumentDeleted =
@@ -153,9 +152,9 @@ const waitForGarbageCollectionForSplit = function(donorNodes, migrationId, tenan
"tenant access blockers weren't removed",
60 * 1000,
1 * 1000);
-};
+}
-const commitSplitAsync = function({
+export function commitSplitAsync({
rst,
tenantIds,
recipientTagName,
@@ -183,9 +182,9 @@ const commitSplitAsync = function({
thread.start();
return thread;
-};
+}
-const runShardSplitCommand = function(
+export function runShardSplitCommand(
replicaSet, cmdObj, retryOnRetryableErrors, enableDonorStartMigrationFsync) {
let res;
if (enableDonorStartMigrationFsync) {
@@ -225,7 +224,7 @@ const runShardSplitCommand = function(
}
}, "failed to retry commitShardSplit", 10 * 1000, 1 * 1000);
return res;
-};
+}
/**
* Utility class to run shard split operations.
@@ -343,7 +342,7 @@ class ShardSplitOperation {
* Utility class to create a ReplicaSetTest that provides functionnality to run a shard split
* operation.
*/
-class ShardSplitTest {
+export class ShardSplitTest {
constructor({
recipientTagName = "recipientNode",
recipientSetName = "recipientSetName",
@@ -691,17 +690,12 @@ ShardSplitTest.DonorState = {
kAborted: "aborted"
};
-function findSplitOperation(primary, migrationId) {
+export function findSplitOperation(primary, migrationId) {
const donorsCollection = primary.getCollection(ShardSplitTest.kConfigSplitDonorsNS);
return donorsCollection.findOne({"_id": migrationId});
}
-function cleanupMigrationDocument(primary, migrationId) {
- const donorsCollection = primary.getCollection(ShardSplitTest.kConfigSplitDonorsNS);
- return donorsCollection.deleteOne({"_id": migrationId}, {w: "majority"});
-}
-
-function assertMigrationState(primary, migrationId, state) {
+export function assertMigrationState(primary, migrationId, state) {
const migrationDoc = findSplitOperation(primary, migrationId);
assert(migrationDoc);
diff --git a/jstests/serverless/serverless_reject_multiple_ops_access_blocker.js b/jstests/serverless/serverless_reject_multiple_ops_access_blocker.js
index b54382d5bbb..e1073ddeb92 100644
--- a/jstests/serverless/serverless_reject_multiple_ops_access_blocker.js
+++ b/jstests/serverless/serverless_reject_multiple_ops_access_blocker.js
@@ -6,9 +6,9 @@
* ]
*/
+import {addRecipientNodes, commitSplitAsync} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/replsets/libs/tenant_migration_test.js");
load("jstests/replsets/libs/tenant_migration_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
load("jstests/libs/uuid_util.js");
function cannotStartMigrationWhenThereIsAnExistingAccessBlocker(protocol) {
@@ -21,7 +21,7 @@ function cannotStartMigrationWhenThereIsAnExistingAccessBlocker(protocol) {
// Ensure a high enough delay so the shard split document is not deleted before tenant migration
// is started.
- sharedOptions = {};
+ const sharedOptions = {};
sharedOptions["setParameter"] = {
shardSplitGarbageCollectionDelayMS: 36000000,
ttlMonitorSleepSecs: 1
diff --git a/jstests/serverless/serverless_reject_multiple_ops_migration_after_garbage_collection.js b/jstests/serverless/serverless_reject_multiple_ops_migration_after_garbage_collection.js
index dc5c4929a20..115ceacf9fb 100644
--- a/jstests/serverless/serverless_reject_multiple_ops_migration_after_garbage_collection.js
+++ b/jstests/serverless/serverless_reject_multiple_ops_migration_after_garbage_collection.js
@@ -6,10 +6,13 @@
* ]
*/
+import {
+ addRecipientNodes,
+ commitSplitAsync,
+ waitForGarbageCollectionForSplit
+} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/replsets/libs/tenant_migration_test.js");
load("jstests/replsets/libs/tenant_migration_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
-load("jstests/libs/parallelTester.js");
load("jstests/libs/uuid_util.js");
function canStartMigrationAfterSplitGarbageCollection(protocol) {
@@ -20,7 +23,7 @@ function canStartMigrationAfterSplitGarbageCollection(protocol) {
const splitMigrationId = UUID();
const tenantMigrationId = UUID();
- sharedOptions = {};
+ const sharedOptions = {};
sharedOptions["setParameter"] = {shardSplitGarbageCollectionDelayMS: 0, ttlMonitorSleepSecs: 1};
const test = new TenantMigrationTest({quickGarbageCollection: true, sharedOptions});
diff --git a/jstests/serverless/serverless_reject_multiple_ops_migration_different_tenant.js b/jstests/serverless/serverless_reject_multiple_ops_migration_different_tenant.js
index b8b3e38a185..be93b69b91d 100644
--- a/jstests/serverless/serverless_reject_multiple_ops_migration_different_tenant.js
+++ b/jstests/serverless/serverless_reject_multiple_ops_migration_different_tenant.js
@@ -6,9 +6,13 @@
* ]
*/
+import {
+ addRecipientNodes,
+ commitSplitAsync,
+ waitForGarbageCollectionForSplit
+} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/replsets/libs/tenant_migration_test.js");
load("jstests/replsets/libs/tenant_migration_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
load("jstests/libs/uuid_util.js");
function cannotStartMigrationWithDifferentTenantWhileShardSplitIsInProgress(protocol) {
@@ -20,7 +24,7 @@ function cannotStartMigrationWithDifferentTenantWhileShardSplitIsInProgress(prot
const splitMigrationId = UUID();
const tenantMigrationId = UUID();
- sharedOptions = {};
+ const sharedOptions = {};
sharedOptions["setParameter"] = {shardSplitGarbageCollectionDelayMS: 0, ttlMonitorSleepSecs: 1};
const test = new TenantMigrationTest({quickGarbageCollection: true, sharedOptions});
diff --git a/jstests/serverless/serverless_reject_multiple_ops_migration_donor.js b/jstests/serverless/serverless_reject_multiple_ops_migration_donor.js
index dc5c4929a20..115ceacf9fb 100644
--- a/jstests/serverless/serverless_reject_multiple_ops_migration_donor.js
+++ b/jstests/serverless/serverless_reject_multiple_ops_migration_donor.js
@@ -6,10 +6,13 @@
* ]
*/
+import {
+ addRecipientNodes,
+ commitSplitAsync,
+ waitForGarbageCollectionForSplit
+} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/replsets/libs/tenant_migration_test.js");
load("jstests/replsets/libs/tenant_migration_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
-load("jstests/libs/parallelTester.js");
load("jstests/libs/uuid_util.js");
function canStartMigrationAfterSplitGarbageCollection(protocol) {
@@ -20,7 +23,7 @@ function canStartMigrationAfterSplitGarbageCollection(protocol) {
const splitMigrationId = UUID();
const tenantMigrationId = UUID();
- sharedOptions = {};
+ const sharedOptions = {};
sharedOptions["setParameter"] = {shardSplitGarbageCollectionDelayMS: 0, ttlMonitorSleepSecs: 1};
const test = new TenantMigrationTest({quickGarbageCollection: true, sharedOptions});
diff --git a/jstests/serverless/serverless_reject_multiple_ops_migration_donor_retry.js b/jstests/serverless/serverless_reject_multiple_ops_migration_donor_retry.js
index 1ed74c9f793..2516c4611d4 100644
--- a/jstests/serverless/serverless_reject_multiple_ops_migration_donor_retry.js
+++ b/jstests/serverless/serverless_reject_multiple_ops_migration_donor_retry.js
@@ -6,9 +6,13 @@
* ]
*/
+import {
+ addRecipientNodes,
+ commitSplitAsync,
+ waitForGarbageCollectionForSplit
+} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/replsets/libs/tenant_migration_test.js");
load("jstests/replsets/libs/tenant_migration_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
load("jstests/libs/uuid_util.js");
function retryMigrationAfterSplitCompletes(protocol) {
@@ -20,7 +24,7 @@ function retryMigrationAfterSplitCompletes(protocol) {
const firstTenantMigrationId = UUID();
const secondTenantMigrationId = UUID();
- sharedOptions = {};
+ const sharedOptions = {};
sharedOptions["setParameter"] = {shardSplitGarbageCollectionDelayMS: 0, ttlMonitorSleepSecs: 1};
const test = new TenantMigrationTest({quickGarbageCollection: true, sharedOptions});
diff --git a/jstests/serverless/serverless_reject_multiple_ops_migration_fail.js b/jstests/serverless/serverless_reject_multiple_ops_migration_fail.js
index 7b911da8c50..13f311ffe80 100644
--- a/jstests/serverless/serverless_reject_multiple_ops_migration_fail.js
+++ b/jstests/serverless/serverless_reject_multiple_ops_migration_fail.js
@@ -6,9 +6,13 @@
* ]
*/
+import {
+ addRecipientNodes,
+ commitSplitAsync,
+ waitForGarbageCollectionForSplit
+} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/replsets/libs/tenant_migration_test.js");
load("jstests/replsets/libs/tenant_migration_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
load("jstests/libs/uuid_util.js");
function cannotStartMigrationWhileShardSplitIsInProgress(protocol) {
@@ -19,7 +23,7 @@ function cannotStartMigrationWhileShardSplitIsInProgress(protocol) {
const splitMigrationId = UUID();
const tenantMigrationId = UUID();
- sharedOptions = {};
+ const sharedOptions = {};
sharedOptions["setParameter"] = {shardSplitGarbageCollectionDelayMS: 0, ttlMonitorSleepSecs: 1};
const test = new TenantMigrationTest({quickGarbageCollection: true, sharedOptions});
diff --git a/jstests/serverless/serverless_reject_multiple_ops_migration_fail_on_recipient.js b/jstests/serverless/serverless_reject_multiple_ops_migration_fail_on_recipient.js
index c1a546ca02a..1ab2ac05996 100644
--- a/jstests/serverless/serverless_reject_multiple_ops_migration_fail_on_recipient.js
+++ b/jstests/serverless/serverless_reject_multiple_ops_migration_fail_on_recipient.js
@@ -6,9 +6,13 @@
* ]
*/
+import {
+ addRecipientNodes,
+ commitSplitAsync,
+ waitForGarbageCollectionForSplit
+} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/replsets/libs/tenant_migration_test.js");
load("jstests/replsets/libs/tenant_migration_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
load("jstests/libs/uuid_util.js");
function cannotStartMigrationWhileShardSplitIsInProgressOnRecipient(protocol) {
@@ -19,7 +23,7 @@ function cannotStartMigrationWhileShardSplitIsInProgressOnRecipient(protocol) {
const splitMigrationId = UUID();
const tenantMigrationId = UUID();
- sharedOptions = {};
+ const sharedOptions = {};
sharedOptions["setParameter"] = {shardSplitGarbageCollectionDelayMS: 0, ttlMonitorSleepSecs: 1};
const test = new TenantMigrationTest({quickGarbageCollection: true, sharedOptions});
diff --git a/jstests/serverless/serverless_reject_multiple_ops_migration_recipient_retry.js b/jstests/serverless/serverless_reject_multiple_ops_migration_recipient_retry.js
index 13e55b65aca..9567fe2e325 100644
--- a/jstests/serverless/serverless_reject_multiple_ops_migration_recipient_retry.js
+++ b/jstests/serverless/serverless_reject_multiple_ops_migration_recipient_retry.js
@@ -6,9 +6,13 @@
* ]
*/
+import {
+ addRecipientNodes,
+ commitSplitAsync,
+ waitForGarbageCollectionForSplit
+} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/replsets/libs/tenant_migration_test.js");
load("jstests/replsets/libs/tenant_migration_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
load("jstests/libs/uuid_util.js");
function cannotStartMigrationWhileShardSplitIsInProgressOnRecipient(protocol) {
@@ -20,7 +24,7 @@ function cannotStartMigrationWhileShardSplitIsInProgressOnRecipient(protocol) {
const tenantMigrationId = UUID();
const secondTenantMigrationId = UUID();
- sharedOptions = {};
+ const sharedOptions = {};
sharedOptions["setParameter"] = {shardSplitGarbageCollectionDelayMS: 0, ttlMonitorSleepSecs: 1};
const test = new TenantMigrationTest({quickGarbageCollection: true, sharedOptions});
diff --git a/jstests/serverless/serverless_reject_multiple_ops_split.js b/jstests/serverless/serverless_reject_multiple_ops_split.js
index 48708f79fa8..0531094f164 100644
--- a/jstests/serverless/serverless_reject_multiple_ops_split.js
+++ b/jstests/serverless/serverless_reject_multiple_ops_split.js
@@ -6,9 +6,9 @@
* ]
*/
+import {addRecipientNodes, commitSplitAsync} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/replsets/libs/tenant_migration_test.js");
load("jstests/replsets/libs/tenant_migration_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
load("jstests/libs/uuid_util.js");
function cannotStartShardSplitWithMigrationInProgress(
@@ -52,7 +52,7 @@ function cannotStartShardSplitWithMigrationInProgress(
jsTestLog("cannotStartShardSplitWithMigrationInProgress test completed");
}
-sharedOptions = {};
+const sharedOptions = {};
sharedOptions["setParameter"] = {
shardSplitGarbageCollectionDelayMS: 0,
tenantMigrationGarbageCollectionDelayMS: 0,
diff --git a/jstests/serverless/serverless_reject_multiple_ops_split_retry.js b/jstests/serverless/serverless_reject_multiple_ops_split_retry.js
index 8b2fdf93c76..0955e0b0802 100644
--- a/jstests/serverless/serverless_reject_multiple_ops_split_retry.js
+++ b/jstests/serverless/serverless_reject_multiple_ops_split_retry.js
@@ -6,9 +6,9 @@
* ]
*/
+import {addRecipientNodes, commitSplitAsync} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/replsets/libs/tenant_migration_test.js");
load("jstests/replsets/libs/tenant_migration_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
load("jstests/libs/uuid_util.js");
function retrySplit({protocol, recipientTagName, recipientSetName, tenantIds, test, splitRst}) {
@@ -78,7 +78,7 @@ const recipientTagName = "recipientTag";
const recipientSetName = "recipient";
const tenantIds = [ObjectId(), ObjectId()];
-sharedOptions = {
+const sharedOptions = {
setParameter: {
shardSplitGarbageCollectionDelayMS: 0,
tenantMigrationGarbageCollectionDelayMS: 0,
diff --git a/jstests/serverless/serverless_reject_multiple_ops_split_success.js b/jstests/serverless/serverless_reject_multiple_ops_split_success.js
index f982176fdd5..d0660710a30 100644
--- a/jstests/serverless/serverless_reject_multiple_ops_split_success.js
+++ b/jstests/serverless/serverless_reject_multiple_ops_split_success.js
@@ -6,9 +6,9 @@
* ]
*/
+import {addRecipientNodes, commitSplitAsync} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/replsets/libs/tenant_migration_test.js");
load("jstests/replsets/libs/tenant_migration_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
load("jstests/libs/uuid_util.js");
function canStartShardSplitWithAbortedMigration({protocol, runOnRecipient}) {
@@ -18,7 +18,7 @@ function canStartShardSplitWithAbortedMigration({protocol, runOnRecipient}) {
const splitMigrationId = UUID();
const tenantMigrationId = UUID();
- sharedOptions = {};
+ const sharedOptions = {};
sharedOptions["setParameter"] = {shardSplitGarbageCollectionDelayMS: 0, ttlMonitorSleepSecs: 1};
const test = new TenantMigrationTest({quickGarbageCollection: false, sharedOptions});
diff --git a/jstests/serverless/shard_split_abort_during_upgrade_downgrade.js b/jstests/serverless/shard_split_abort_during_upgrade_downgrade.js
index cdbcd193380..63e791e448d 100644
--- a/jstests/serverless/shard_split_abort_during_upgrade_downgrade.js
+++ b/jstests/serverless/shard_split_abort_during_upgrade_downgrade.js
@@ -4,17 +4,15 @@
* @tags: [requires_fcv_62, serverless]
*/
-(function() {
-"use strict";
+import {ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/fail_point_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
// Shard split commands are gated by a feature flag, which will not be supported when we
// downgrade versions. Eventually, we will run this test when we have two consecutive versions
// that support `commitShardSplit` without a feature flag. This check will be removed as part
// of SERVER-66965.
if (MongoRunner.compareBinVersions(latestFCV, "6.3") < 0) {
- return;
+ quit();
}
// Skip db hash check because secondary is left with a different config.
@@ -58,4 +56,3 @@ upgradeThread.join();
secondSplit.forget();
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_abort_forget_retry.js b/jstests/serverless/shard_split_abort_forget_retry.js
index b6bb76c56fe..7e0edd5be35 100644
--- a/jstests/serverless/shard_split_abort_forget_retry.js
+++ b/jstests/serverless/shard_split_abort_forget_retry.js
@@ -7,13 +7,9 @@
* @tags: [requires_fcv_62, serverless]
*/
-(function() {
-"use strict";
+import {assertMigrationState, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/fail_point_util.js");
-load('jstests/libs/parallel_shell_helpers.js'); // for "startParallelShell"
-load("jstests/libs/uuid_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
TestData.skipCheckDBHashes = true;
const test = new ShardSplitTest({quickGarbageCollection: true});
@@ -103,4 +99,3 @@ const test = new ShardSplitTest({quickGarbageCollection: true});
})();
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_abort_on_setfcv.js b/jstests/serverless/shard_split_abort_on_setfcv.js
index 0b5d4288de9..dee05af5417 100644
--- a/jstests/serverless/shard_split_abort_on_setfcv.js
+++ b/jstests/serverless/shard_split_abort_on_setfcv.js
@@ -5,10 +5,9 @@
* @tags: [requires_fcv_62, serverless]
*/
-(function() {
-"use strict";
+import {ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
+
load("jstests/libs/fail_point_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
// Skip db hash check because secondary is left with a different config.
TestData.skipCheckDBHashes = true;
@@ -51,4 +50,3 @@ if (lastContinuousFCV == "6.1") {
}
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_abort_while_committing.js b/jstests/serverless/shard_split_abort_while_committing.js
index 8eaf00b202e..7e0550a6806 100644
--- a/jstests/serverless/shard_split_abort_while_committing.js
+++ b/jstests/serverless/shard_split_abort_while_committing.js
@@ -4,8 +4,9 @@
* @tags: [requires_fcv_62, serverless]
*/
+import {assertMigrationState, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
+
load("jstests/libs/fail_point_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
const failpoints = ["pauseShardSplitAfterUpdatingToCommittedState"];
diff --git a/jstests/serverless/shard_split_basic_test.js b/jstests/serverless/shard_split_basic_test.js
index 37a19fcaaf8..3539ab69199 100644
--- a/jstests/serverless/shard_split_basic_test.js
+++ b/jstests/serverless/shard_split_basic_test.js
@@ -3,10 +3,11 @@
* @tags: [requires_fcv_62, serverless]
*/
-load("jstests/serverless/libs/shard_split_test.js");
-
-(function() {
-"use strict";
+import {
+ assertMigrationState,
+ findSplitOperation,
+ ShardSplitTest
+} from "jstests/serverless/libs/shard_split_test.js";
const tenantIds = [ObjectId(), ObjectId()];
const test = new ShardSplitTest({quickGarbageCollection: true});
@@ -32,4 +33,3 @@ assert.gt(status.shardSplits.totalCommittedDurationWithoutCatchupMillis, 0);
test.cleanupSuccesfulCommitted(operation.migrationId, tenantIds);
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_buildindex.js b/jstests/serverless/shard_split_buildindex.js
index 6bde26885a9..70f57619a58 100644
--- a/jstests/serverless/shard_split_buildindex.js
+++ b/jstests/serverless/shard_split_buildindex.js
@@ -12,12 +12,10 @@
* ]
*/
-(function() {
-"use strict";
+import {assertMigrationState, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/fail_point_util.js");
load("jstests/replsets/libs/tenant_migration_test.js");
-load("jstests/serverless/libs/shard_split_test.js");
const shardSplitTest = new ShardSplitTest({quickGarbageCollection: true});
shardSplitTest.addRecipientNodes();
@@ -143,4 +141,3 @@ assert.commandFailedWithCode(db[kNewCollName1].createIndex({b: 1}),
operation.forget();
shardSplitTest.cleanupSuccesfulCommitted(operation.migrationId, tenantIds);
shardSplitTest.stop();
-})();
diff --git a/jstests/serverless/shard_split_change_collections_test.js b/jstests/serverless/shard_split_change_collections_test.js
index 41b032e4973..ee0f99a2dc0 100644
--- a/jstests/serverless/shard_split_change_collections_test.js
+++ b/jstests/serverless/shard_split_change_collections_test.js
@@ -3,27 +3,21 @@
* @tags: [requires_fcv_62, serverless]
*/
+import {assertMigrationState, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/cluster_server_parameter_utils.js");
-load("jstests/serverless/libs/shard_split_test.js");
load("jstests/serverless/libs/change_collection_util.js");
-(function() {
-"use strict";
-
const tenantIds = [ObjectId(), ObjectId()];
-
const donorRst = new ChangeStreamMultitenantReplicaSetTest({
nodes: 3,
nodeOptions: {setParameter: {shardSplitGarbageCollectionDelayMS: 0, ttlMonitorSleepSecs: 1}}
});
const test = new ShardSplitTest({quickGarbageCollection: true, donorRst});
-
test.addRecipientNodes();
test.donor.awaitSecondaryNodes();
const donorPrimary = test.getDonorPrimary();
-
const donorTenantConn =
ChangeStreamMultitenantReplicaSetTest.getTenantConnection(donorPrimary.host, tenantIds[0]);
test.donor.setChangeStreamState(donorTenantConn, true);
@@ -43,7 +37,7 @@ assert.eq(donorCursor.hasNext(), true);
const {_id: resumeToken} = donorCursor.next();
const operation = test.createSplitOperation(tenantIds);
-const result = assert.commandWorked(operation.commit());
+assert.commandWorked(operation.commit());
assertMigrationState(donorPrimary, operation.migrationId, "committed");
let errCode;
@@ -84,4 +78,3 @@ assert.eq(changeStreamsClusterParameter.expireAfterSeconds, 7200);
test.cleanupSuccesfulCommitted(operation.migrationId, tenantIds);
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_concurrent_bulk_writes.js b/jstests/serverless/shard_split_concurrent_bulk_writes.js
index 6618214b1e9..fd9c87ad229 100644
--- a/jstests/serverless/shard_split_concurrent_bulk_writes.js
+++ b/jstests/serverless/shard_split_concurrent_bulk_writes.js
@@ -15,13 +15,9 @@
* ]
*/
-(function() {
-'use strict';
-
+import {assertMigrationState, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/fail_point_util.js");
load("jstests/libs/parallelTester.js");
-load("jstests/libs/uuid_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
const kMaxBatchSize = 2;
const kCollName = "testColl";
@@ -619,4 +615,3 @@ function bulkMultiUpdateDocsUnordered(primaryHost, dbName, collName, numDocs) {
tojson(bulkWriteRes));
test.stop();
})();
-})();
diff --git a/jstests/serverless/shard_split_concurrent_reads_on_donor_aborted.js b/jstests/serverless/shard_split_concurrent_reads_on_donor_aborted.js
index f6141d6882b..c559b12ca2e 100644
--- a/jstests/serverless/shard_split_concurrent_reads_on_donor_aborted.js
+++ b/jstests/serverless/shard_split_concurrent_reads_on_donor_aborted.js
@@ -14,13 +14,15 @@
* ]
*/
-(function() {
-'use strict';
+import {
+ assertMigrationState,
+ findSplitOperation,
+ ShardSplitTest
+} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/fail_point_util.js");
load("jstests/libs/parallelTester.js");
load("jstests/libs/uuid_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
load("jstests/serverless/shard_split_concurrent_reads_on_donor_util.js");
const kCollName = "testColl";
@@ -104,4 +106,3 @@ for (const [testCaseName, testCase] of Object.entries(testCases)) {
}
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_concurrent_reads_on_donor_blocking.js b/jstests/serverless/shard_split_concurrent_reads_on_donor_blocking.js
index 4c533c86a4d..af06d3ff0ce 100644
--- a/jstests/serverless/shard_split_concurrent_reads_on_donor_blocking.js
+++ b/jstests/serverless/shard_split_concurrent_reads_on_donor_blocking.js
@@ -14,13 +14,9 @@
* ]
*/
-(function() {
-'use strict';
+import {findSplitOperation, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/fail_point_util.js");
-load("jstests/libs/parallelTester.js");
-load("jstests/libs/uuid_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
load("jstests/serverless/shard_split_concurrent_reads_on_donor_util.js");
const kCollName = "testColl";
@@ -109,4 +105,3 @@ splitThread.join();
assert.commandWorked(splitThread.returnData());
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_concurrent_reads_on_donor_blocking_then_aborted.js b/jstests/serverless/shard_split_concurrent_reads_on_donor_blocking_then_aborted.js
index 4d50feb0aab..cc3604520e6 100644
--- a/jstests/serverless/shard_split_concurrent_reads_on_donor_blocking_then_aborted.js
+++ b/jstests/serverless/shard_split_concurrent_reads_on_donor_blocking_then_aborted.js
@@ -16,13 +16,9 @@
* ]
*/
-(function() {
-'use strict';
+import {findSplitOperation, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/fail_point_util.js");
-load("jstests/libs/parallelTester.js");
-load("jstests/libs/uuid_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
load("jstests/serverless/shard_split_concurrent_reads_on_donor_util.js");
const ktenantId = ObjectId();
@@ -33,11 +29,11 @@ const kCollName = "testColl";
* To be used to resume a split that is paused after entering the blocking state. Waits for the
* number of blocked reads to reach 'targetNumBlockedReads' and unpauses the split.
*/
-function resumeMigrationAfterBlockingRead(host, tenantId, targetNumBlockedReads) {
+async function resumeMigrationAfterBlockingRead(host, tenantId, targetNumBlockedReads) {
+ const {ShardSplitTest} = await import("jstests/serverless/libs/shard_split_test.js");
load("jstests/libs/fail_point_util.js");
- load("jstests/serverless/libs/shard_split_test.js");
- const primary = new Mongo(host);
+ const primary = new Mongo(host);
assert.soon(() => ShardSplitTest.getNumBlockedReads(primary, eval(tenantId)) ==
targetNumBlockedReads);
@@ -125,4 +121,3 @@ for (const [testCaseName, testCase] of Object.entries(testCases)) {
const dbName = `${ktenantId.str}_${testCaseName}`;
testUnblockBlockedReadsAfterMigrationAborted(testCase, dbName, kCollName);
}
-})();
diff --git a/jstests/serverless/shard_split_concurrent_reads_on_donor_blocking_then_committed.js b/jstests/serverless/shard_split_concurrent_reads_on_donor_blocking_then_committed.js
index 4626cf2e2e6..f7110cdaade 100644
--- a/jstests/serverless/shard_split_concurrent_reads_on_donor_blocking_then_committed.js
+++ b/jstests/serverless/shard_split_concurrent_reads_on_donor_blocking_then_committed.js
@@ -14,13 +14,9 @@
* ]
*/
-(function() {
-'use strict';
+import {findSplitOperation, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/fail_point_util.js");
-load("jstests/libs/parallelTester.js");
-load("jstests/libs/uuid_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
load("jstests/serverless/shard_split_concurrent_reads_on_donor_util.js");
const kCollName = "testColl";
@@ -30,11 +26,11 @@ const kTenantId = ObjectId();
* To be used to resume a split that is paused after entering the blocking state. Waits for the
* number of blocked reads to reach 'targetNumBlockedReads' and unpauses the split.
*/
-function resumeMigrationAfterBlockingRead(host, tenantId, targetNumBlockedReads) {
+async function resumeMigrationAfterBlockingRead(host, tenantId, targetNumBlockedReads) {
+ const {ShardSplitTest} = await import("jstests/serverless/libs/shard_split_test.js");
load("jstests/libs/fail_point_util.js");
- load("jstests/serverless/libs/shard_split_test.js");
- const primary = new Mongo(host);
+ const primary = new Mongo(host);
assert.soon(() => ShardSplitTest.getNumBlockedReads(primary, eval(tenantId)) ==
targetNumBlockedReads);
@@ -118,4 +114,3 @@ for (const [testCaseName, testCase] of Object.entries(testCases)) {
const dbName = `${kTenantId.str}_${testCaseName}`;
testRejectBlockedReadsAfterMigrationCommitted(testCase, dbName, kCollName);
}
-})();
diff --git a/jstests/serverless/shard_split_concurrent_reads_on_donor_committed.js b/jstests/serverless/shard_split_concurrent_reads_on_donor_committed.js
index ae7f9a1f3fe..901d11cb4bf 100644
--- a/jstests/serverless/shard_split_concurrent_reads_on_donor_committed.js
+++ b/jstests/serverless/shard_split_concurrent_reads_on_donor_committed.js
@@ -14,13 +14,9 @@
* ]
*/
-(function() {
-'use strict';
+import {findSplitOperation, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/fail_point_util.js");
-load("jstests/libs/parallelTester.js");
-load("jstests/libs/uuid_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
load("jstests/serverless/shard_split_concurrent_reads_on_donor_util.js");
const kCollName = "testColl";
@@ -123,4 +119,3 @@ secondaries.forEach(node => {
});
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_concurrent_reconfig.js b/jstests/serverless/shard_split_concurrent_reconfig.js
index babe54fbce5..d1a34212367 100644
--- a/jstests/serverless/shard_split_concurrent_reconfig.js
+++ b/jstests/serverless/shard_split_concurrent_reconfig.js
@@ -4,10 +4,7 @@
* @tags: [requires_fcv_62, serverless]
*/
-load("jstests/serverless/libs/shard_split_test.js");
-
-(function() {
-"use strict";
+import {ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
const tenantIds = [ObjectId(), ObjectId()];
const test = new ShardSplitTest({quickGarbageCollection: true});
@@ -35,4 +32,3 @@ split.forget();
test.cleanupSuccesfulAborted(split.migrationId, tenantIds);
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_concurrent_state_doc_removal_and_stepdown.js b/jstests/serverless/shard_split_concurrent_state_doc_removal_and_stepdown.js
index dc7e52a944b..b14fecb51f6 100644
--- a/jstests/serverless/shard_split_concurrent_state_doc_removal_and_stepdown.js
+++ b/jstests/serverless/shard_split_concurrent_state_doc_removal_and_stepdown.js
@@ -12,13 +12,9 @@
* ]
*/
-(function() {
-"use strict";
+import {ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
-load("jstests/libs/parallelTester.js");
load("jstests/libs/fail_point_util.js");
-load("jstests/libs/uuid_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
const test = new ShardSplitTest({
recipientTagName: "recipientTag",
@@ -58,4 +54,3 @@ assert.commandFailedWithCode(forgetMigrationThread.returnData(),
ErrorCodes.InterruptedDueToReplStateChange);
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_concurrent_writes_on_donor_aborted.js b/jstests/serverless/shard_split_concurrent_writes_on_donor_aborted.js
index e58e0ed8061..db4f269e3c3 100644
--- a/jstests/serverless/shard_split_concurrent_writes_on_donor_aborted.js
+++ b/jstests/serverless/shard_split_concurrent_writes_on_donor_aborted.js
@@ -10,15 +10,12 @@
* requires_fcv_62
* ]
*/
-(function() {
-'use strict';
+
+import {assertMigrationState, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/fail_point_util.js");
-load("jstests/libs/parallelTester.js");
-load("jstests/libs/uuid_util.js");
load("jstests/replsets/libs/tenant_migration_test.js");
load("jstests/replsets/tenant_migration_concurrent_writes_on_donor_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
TestData.skipCheckDBHashes = true;
const tenantMigrationTest = new ShardSplitTest({
@@ -144,4 +141,3 @@ abortFp.off();
runTestsAfterMigration();
tenantMigrationTest.stop();
-})();
diff --git a/jstests/serverless/shard_split_concurrent_writes_on_donor_blocking.js b/jstests/serverless/shard_split_concurrent_writes_on_donor_blocking.js
index 06e8d231d58..7f434139146 100644
--- a/jstests/serverless/shard_split_concurrent_writes_on_donor_blocking.js
+++ b/jstests/serverless/shard_split_concurrent_writes_on_donor_blocking.js
@@ -11,15 +11,12 @@
* requires_fcv_62
* ]
*/
-(function() {
-'use strict';
+
+import {ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/fail_point_util.js");
-load("jstests/libs/parallelTester.js");
-load("jstests/libs/uuid_util.js");
load("jstests/replsets/libs/tenant_migration_test.js");
load("jstests/replsets/tenant_migration_concurrent_writes_on_donor_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
TestData.skipCheckDBHashes = true;
const tenantMigrationTest = new ShardSplitTest({
@@ -186,4 +183,3 @@ ShardSplitTest.checkShardSplitAccessBlocker(
donorPrimary, kTenantID, {numBlockedWrites: countBlockedWrites});
tenantMigrationTest.stop();
-})();
diff --git a/jstests/serverless/shard_split_concurrent_writes_on_donor_committed.js b/jstests/serverless/shard_split_concurrent_writes_on_donor_committed.js
index 6a18e7d4b99..16dfc9394f1 100644
--- a/jstests/serverless/shard_split_concurrent_writes_on_donor_committed.js
+++ b/jstests/serverless/shard_split_concurrent_writes_on_donor_committed.js
@@ -10,15 +10,11 @@
* requires_fcv_62
* ]
*/
-(function() {
-'use strict';
+
+import {ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/fail_point_util.js");
-load("jstests/libs/parallelTester.js");
-load("jstests/libs/uuid_util.js");
-load("jstests/replsets/libs/tenant_migration_test.js");
load("jstests/replsets/tenant_migration_concurrent_writes_on_donor_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
TestData.skipCheckDBHashes = true;
const test = new ShardSplitTest({
@@ -137,4 +133,3 @@ ShardSplitTest.checkShardSplitAccessBlocker(donorPrimary, kTenantID, {
});
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_donor_current_op.js b/jstests/serverless/shard_split_donor_current_op.js
index ebac82aafca..1ae80c00288 100644
--- a/jstests/serverless/shard_split_donor_current_op.js
+++ b/jstests/serverless/shard_split_donor_current_op.js
@@ -14,12 +14,9 @@
* ]
*/
-(function() {
-"use strict";
+import {ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/fail_point_util.js");
-load("jstests/libs/uuid_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
const kTenantIds = [ObjectId()];
@@ -171,4 +168,3 @@ function checkStandardFieldsOK(ops, {migrationId, reachedDecision, tenantIds}) {
test.stop();
})();
-})();
diff --git a/jstests/serverless/shard_split_drop_state_doc_collection_aborted.js b/jstests/serverless/shard_split_drop_state_doc_collection_aborted.js
index 81f54d9d5bb..17b5710135e 100644
--- a/jstests/serverless/shard_split_drop_state_doc_collection_aborted.js
+++ b/jstests/serverless/shard_split_drop_state_doc_collection_aborted.js
@@ -12,12 +12,9 @@
* ]
*/
-(function() {
-"use strict";
+import {findSplitOperation, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/fail_point_util.js");
-load("jstests/libs/uuid_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
TestData.skipCheckDBHashes = true;
@@ -100,4 +97,3 @@ testDroppingStateDocCollections(test, fpName, {
});
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_drop_state_doc_collection_blocking.js b/jstests/serverless/shard_split_drop_state_doc_collection_blocking.js
index bf313671714..08979c21058 100644
--- a/jstests/serverless/shard_split_drop_state_doc_collection_blocking.js
+++ b/jstests/serverless/shard_split_drop_state_doc_collection_blocking.js
@@ -12,12 +12,9 @@
* ]
*/
-(function() {
-"use strict";
+import {findSplitOperation, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/fail_point_util.js");
-load("jstests/libs/uuid_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
TestData.skipCheckDBHashes = true;
@@ -104,4 +101,3 @@ if (fpName) {
}
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_drop_state_doc_collection_committed.js b/jstests/serverless/shard_split_drop_state_doc_collection_committed.js
index 56b6cbcf31d..5ec30b9816f 100644
--- a/jstests/serverless/shard_split_drop_state_doc_collection_committed.js
+++ b/jstests/serverless/shard_split_drop_state_doc_collection_committed.js
@@ -12,12 +12,9 @@
* ]
*/
-(function() {
-"use strict";
+import {findSplitOperation, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/fail_point_util.js");
-load("jstests/libs/uuid_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
TestData.skipCheckDBHashes = true;
@@ -77,4 +74,3 @@ testDroppingStateDocCollections(
test, fpName, {dropDonorsCollection: true, retryWithDifferentMigrationId: true});
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_drop_state_doc_collection_decision_fullfilled.js b/jstests/serverless/shard_split_drop_state_doc_collection_decision_fullfilled.js
index 6be3fc6a920..656a9996e57 100644
--- a/jstests/serverless/shard_split_drop_state_doc_collection_decision_fullfilled.js
+++ b/jstests/serverless/shard_split_drop_state_doc_collection_decision_fullfilled.js
@@ -13,12 +13,9 @@
* ]
*/
-(function() {
-"use strict";
+import {findSplitOperation, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/fail_point_util.js");
-load("jstests/libs/uuid_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
TestData.skipCheckDBHashes = true;
@@ -107,4 +104,3 @@ if (fpName) {
}
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_ensure_split_outcome_visibility_for_blocked_writes.js b/jstests/serverless/shard_split_ensure_split_outcome_visibility_for_blocked_writes.js
index f7d91efa254..315df33ad5e 100644
--- a/jstests/serverless/shard_split_ensure_split_outcome_visibility_for_blocked_writes.js
+++ b/jstests/serverless/shard_split_ensure_split_outcome_visibility_for_blocked_writes.js
@@ -14,12 +14,10 @@
* requires_fcv_62
* ]
*/
-(function() {
-'use strict';
+
+import {assertMigrationState, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/fail_point_util.js");
-load("jstests/libs/uuid_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
const kGarbageCollectionParams = {
// Set the delay before a donor state doc is garbage collected to be short to speed up the test.
@@ -137,4 +135,3 @@ function insertDocument(primaryHost, dbName, collName) {
test.stop();
})();
-})();
diff --git a/jstests/serverless/shard_split_invalid_inputs.js b/jstests/serverless/shard_split_invalid_inputs.js
index 0f6c5dd6ac1..11b25eeedf1 100644
--- a/jstests/serverless/shard_split_invalid_inputs.js
+++ b/jstests/serverless/shard_split_invalid_inputs.js
@@ -12,11 +12,7 @@
* ]
*/
-(function() {
-"use strict";
-
-load("jstests/serverless/libs/shard_split_test.js");
-load("jstests/replsets/libs/tenant_migration_util.js");
+import {ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
const test =
new ShardSplitTest({recipientSetName: "recipientSet", recipientTagName: "recipientTag"});
@@ -46,4 +42,3 @@ unsupportedtenantIds.forEach((invalidTenantId) => {
});
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_on_clustered_collections.js b/jstests/serverless/shard_split_on_clustered_collections.js
index 1126e3cf128..0fa6a7b6a16 100644
--- a/jstests/serverless/shard_split_on_clustered_collections.js
+++ b/jstests/serverless/shard_split_on_clustered_collections.js
@@ -16,13 +16,9 @@
* ]
*/
-(function() {
-"use strict";
+import {ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/clustered_collections/clustered_collection_util.js"); // ClusteredCollectionUtil
-load("jstests/libs/parallelTester.js"); // Thread()
-load("jstests/libs/uuid_util.js"); // extractUUIDFromObject()
-load("jstests/serverless/libs/shard_split_test.js"); // ShardSplitTest
const test = new ShardSplitTest({
recipientSetName: "recipientSet",
@@ -100,4 +96,3 @@ operation.forget();
validateMigrationResults(recipientRst);
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_performance_test.js b/jstests/serverless/shard_split_performance_test.js
index c511e64cb6c..7185f32844a 100644
--- a/jstests/serverless/shard_split_performance_test.js
+++ b/jstests/serverless/shard_split_performance_test.js
@@ -4,7 +4,8 @@
* @tags: [requires_fcv_62, serverless]
*/
-load("jstests/serverless/libs/shard_split_test.js");
+import {assertMigrationState, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
+
load("jstests/replsets/rslib.js");
function runOneMoveChunk() {
diff --git a/jstests/serverless/shard_split_read_your_own_writes.js b/jstests/serverless/shard_split_read_your_own_writes.js
index 42bd1edc699..3887e388aa1 100644
--- a/jstests/serverless/shard_split_read_your_own_writes.js
+++ b/jstests/serverless/shard_split_read_your_own_writes.js
@@ -14,11 +14,8 @@
* ]
*/
-(function() {
-"use strict";
+import {ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
-load("jstests/serverless/libs/shard_split_test.js");
-load("jstests/libs/uuid_util.js");
load("jstests/libs/fail_point_util.js"); // For configureFailPoint().
const test =
@@ -124,4 +121,3 @@ test.donor.nodes.forEach(
{configureFailPoint: "tenantMigrationDonorAllowsNonTimestampedReads", mode: "alwaysOn"})));
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_recipient_removes_access_blockers.js b/jstests/serverless/shard_split_recipient_removes_access_blockers.js
index 23ce04dcfae..8ab280e83c8 100644
--- a/jstests/serverless/shard_split_recipient_removes_access_blockers.js
+++ b/jstests/serverless/shard_split_recipient_removes_access_blockers.js
@@ -4,11 +4,9 @@
* @tags: [requires_fcv_62, serverless]
*/
-load("jstests/libs/fail_point_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
+import {ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
-(function() {
-"use strict";
+load("jstests/libs/fail_point_util.js");
// Skip db hash check because secondary is left with a different config.
TestData.skipCheckDBHashes = true;
@@ -47,4 +45,3 @@ assert.soon(() => test.recipientNodes.every(node => {
}));
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_recipient_removes_serverless_lock.js b/jstests/serverless/shard_split_recipient_removes_serverless_lock.js
index 92b778296e2..d1829e0e3b7 100644
--- a/jstests/serverless/shard_split_recipient_removes_serverless_lock.js
+++ b/jstests/serverless/shard_split_recipient_removes_serverless_lock.js
@@ -5,14 +5,12 @@
* @tags: [requires_fcv_62, serverless]
*/
+import {ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
+
load("jstests/libs/fail_point_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
load("jstests/replsets/libs/tenant_migration_util.js");
const {ServerlessLockType, getServerlessOperationLock} = TenantMigrationUtil;
-(function() {
-"use strict";
-
// Skip db hash check because secondary is left with a different config.
TestData.skipCheckDBHashes = true;
@@ -42,4 +40,3 @@ assert.soon(() => test.recipientNodes.every(node => getServerlessOperationLock(n
ServerlessLockType.None));
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_rejects_multiple_ops.js b/jstests/serverless/shard_split_rejects_multiple_ops.js
index 1a6f23c0fad..e4bf0f4fe2f 100644
--- a/jstests/serverless/shard_split_rejects_multiple_ops.js
+++ b/jstests/serverless/shard_split_rejects_multiple_ops.js
@@ -4,12 +4,9 @@
* @tags: [requires_fcv_62, serverless]
*/
-load("jstests/libs/fail_point_util.js"); // for "configureFailPoint"
-load('jstests/libs/parallel_shell_helpers.js'); // for "startParallelShell"
-load("jstests/serverless/libs/shard_split_test.js");
+import {ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
-(function() {
-"use strict";
+load("jstests/libs/fail_point_util.js"); // for "configureFailPoint"
const tenantIds = [ObjectId(), ObjectId()];
@@ -73,4 +70,3 @@ function commitShardSplitConcurrently() {
}
commitShardSplitConcurrently();
-})();
diff --git a/jstests/serverless/shard_split_remove_split_config_after_decision.js b/jstests/serverless/shard_split_remove_split_config_after_decision.js
index 2adb857cde7..337f5f4f091 100644
--- a/jstests/serverless/shard_split_remove_split_config_after_decision.js
+++ b/jstests/serverless/shard_split_remove_split_config_after_decision.js
@@ -4,8 +4,9 @@
* @tags: [requires_fcv_62, serverless]
*/
+import {assertMigrationState, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
+
load("jstests/libs/fail_point_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
function assertSplitConfigExists(donorPrimary, recipientSetName) {
jsTestLog("Asserting a split config has been applied");
diff --git a/jstests/serverless/shard_split_shutdown_while_blocking_reads.js b/jstests/serverless/shard_split_shutdown_while_blocking_reads.js
index 06b1b2d57cc..08fc7f5452a 100644
--- a/jstests/serverless/shard_split_shutdown_while_blocking_reads.js
+++ b/jstests/serverless/shard_split_shutdown_while_blocking_reads.js
@@ -13,14 +13,10 @@
* ]
*/
-(function() {
-"use strict";
+import {findSplitOperation, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/parallelTester.js");
load("jstests/libs/fail_point_util.js");
-load("jstests/libs/uuid_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
-load("jstests/replsets/libs/tenant_migration_util.js");
const test =
new ShardSplitTest({recipientTagName: "recipientTag", recipientSetName: "recipientSet"});
@@ -73,4 +69,3 @@ assert(res.code == ErrorCodes.InterruptedDueToReplStateChange ||
// Shut down all the other nodes.
test.donor.nodes.filter(node => node.port != donorPrimary.port)
.forEach(node => donorRst.stop(node));
-})();
diff --git a/jstests/serverless/shard_split_startup_recovery_aborted.js b/jstests/serverless/shard_split_startup_recovery_aborted.js
index 8370aec71ad..ccf0a5fecd5 100644
--- a/jstests/serverless/shard_split_startup_recovery_aborted.js
+++ b/jstests/serverless/shard_split_startup_recovery_aborted.js
@@ -5,14 +5,14 @@
* @tags: [requires_fcv_62, serverless]
*/
-load("jstests/libs/fail_point_util.js"); // for "configureFailPoint"
-load('jstests/libs/parallel_shell_helpers.js'); // for "startParallelShell"
-load("jstests/noPassthrough/libs/server_parameter_helpers.js"); // for "setParameter"
-load("jstests/serverless/libs/shard_split_test.js");
-load("jstests/replsets/libs/tenant_migration_test.js");
+import {
+ assertMigrationState,
+ findSplitOperation,
+ ShardSplitTest
+} from "jstests/serverless/libs/shard_split_test.js";
-(function() {
-"use strict";
+load("jstests/libs/fail_point_util.js"); // for "configureFailPoint"
+load("jstests/replsets/libs/tenant_migration_test.js");
// Skip db hash check because secondary is left with a different config.
TestData.skipCheckDBHashes = true;
@@ -51,4 +51,3 @@ test.validateTenantAccessBlockers(
operation.migrationId, tenantIds, TenantMigrationTest.DonorAccessState.kAborted);
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_startup_recovery_blocking.js b/jstests/serverless/shard_split_startup_recovery_blocking.js
index be00a4fe50b..972a24e6311 100644
--- a/jstests/serverless/shard_split_startup_recovery_blocking.js
+++ b/jstests/serverless/shard_split_startup_recovery_blocking.js
@@ -4,14 +4,14 @@
* @tags: [requires_fcv_62, serverless]
*/
-load("jstests/libs/fail_point_util.js"); // for "configureFailPoint"
-load('jstests/libs/parallel_shell_helpers.js'); // for "startParallelShell"
-load("jstests/noPassthrough/libs/server_parameter_helpers.js"); // for "setParameter"
-load("jstests/serverless/libs/shard_split_test.js");
-load("jstests/replsets/libs/tenant_migration_test.js");
+import {
+ assertMigrationState,
+ findSplitOperation,
+ ShardSplitTest
+} from "jstests/serverless/libs/shard_split_test.js";
-(function() {
-"use strict";
+load("jstests/libs/fail_point_util.js"); // for "configureFailPoint"
+load("jstests/replsets/libs/tenant_migration_test.js");
// Skip db hash check because secondary is left with a different config.
TestData.skipCheckDBHashes = true;
@@ -48,4 +48,3 @@ test.validateTenantAccessBlockers(
operation.migrationId, tenantIds, TenantMigrationTest.DonorAccessState.kBlockWritesAndReads);
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_startup_recovery_committed.js b/jstests/serverless/shard_split_startup_recovery_committed.js
index c0403c3b7e1..1f93304e94a 100644
--- a/jstests/serverless/shard_split_startup_recovery_committed.js
+++ b/jstests/serverless/shard_split_startup_recovery_committed.js
@@ -4,14 +4,14 @@
* @tags: [requires_fcv_62, serverless]
*/
-load("jstests/libs/fail_point_util.js"); // for "configureFailPoint"
-load('jstests/libs/parallel_shell_helpers.js'); // for "startParallelShell"
-load("jstests/noPassthrough/libs/server_parameter_helpers.js"); // for "setParameter"
-load("jstests/serverless/libs/shard_split_test.js");
-load("jstests/replsets/libs/tenant_migration_test.js");
+import {
+ assertMigrationState,
+ findSplitOperation,
+ ShardSplitTest
+} from "jstests/serverless/libs/shard_split_test.js";
-(function() {
-"use strict";
+load("jstests/libs/fail_point_util.js"); // for "configureFailPoint"
+load("jstests/replsets/libs/tenant_migration_test.js");
// Skip db hash check because secondary is left with a different config.
TestData.skipCheckDBHashes = true;
@@ -51,4 +51,3 @@ test.validateTenantAccessBlockers(
operation.migrationId, tenantIds, TenantMigrationTest.DonorAccessState.kReject);
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_startup_recovery_initially_aborted.js b/jstests/serverless/shard_split_startup_recovery_initially_aborted.js
index d190ebe6a43..b3ab18fcfe4 100644
--- a/jstests/serverless/shard_split_startup_recovery_initially_aborted.js
+++ b/jstests/serverless/shard_split_startup_recovery_initially_aborted.js
@@ -6,17 +6,17 @@
* @tags: [requires_fcv_62, serverless]
*/
-load("jstests/libs/fail_point_util.js"); // for "configureFailPoint"
-load('jstests/libs/parallel_shell_helpers.js'); // for "startParallelShell"
-load("jstests/noPassthrough/libs/server_parameter_helpers.js"); // for "setParameter"
-load("jstests/serverless/libs/shard_split_test.js");
+import {
+ assertMigrationState,
+ findSplitOperation,
+ ShardSplitTest
+} from "jstests/serverless/libs/shard_split_test.js";
+
+load("jstests/libs/fail_point_util.js"); // for "configureFailPoint"
load("jstests/replsets/libs/tenant_migration_test.js");
load("jstests/replsets/libs/tenant_migration_util.js");
const {ServerlessLockType, getServerlessOperationLock} = TenantMigrationUtil;
-(function() {
-"use strict";
-
// Skip db hash check because secondary is left with a different config.
TestData.skipCheckDBHashes = true;
@@ -63,4 +63,3 @@ tenantIds.every(tenantId => {
assert.eq(getServerlessOperationLock(donorPrimary), ServerlessLockType.None);
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_tenant_access_blocking.js b/jstests/serverless/shard_split_tenant_access_blocking.js
index 50c008b5eae..f9ec0a3eaae 100644
--- a/jstests/serverless/shard_split_tenant_access_blocking.js
+++ b/jstests/serverless/shard_split_tenant_access_blocking.js
@@ -4,13 +4,15 @@
* @tags: [requires_fcv_62, serverless]
*/
+import {
+ assertMigrationState,
+ findSplitOperation,
+ ShardSplitTest
+} from "jstests/serverless/libs/shard_split_test.js";
+
load("jstests/libs/fail_point_util.js");
load("jstests/libs/parallelTester.js");
load('jstests/libs/parallel_shell_helpers.js');
-load("jstests/serverless/libs/shard_split_test.js");
-
-(function() {
-"use strict";
jsTestLog("Starting runBlocking");
@@ -88,4 +90,3 @@ operation.forget();
test.waitForGarbageCollection(operation.migrationId, tenantIds);
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_test_max_bson_limit.js b/jstests/serverless/shard_split_test_max_bson_limit.js
index 45a8a23982b..341f51f9d53 100644
--- a/jstests/serverless/shard_split_test_max_bson_limit.js
+++ b/jstests/serverless/shard_split_test_max_bson_limit.js
@@ -11,13 +11,11 @@
* requires_fcv_62
* ]
*/
-(function() {
-'use strict';
+import {ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
load("jstests/libs/fail_point_util.js");
load("jstests/libs/parallelTester.js");
load("jstests/libs/uuid_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
const kCollName = "testColl";
const kTenantDefinedDbName = "0";
@@ -96,4 +94,3 @@ assert.lte(Object.bsonsize(bulkWriteRes),
assert.commandWorked(primaryDB.hello()).maxBsonObjectSize);
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_timeseries_collections.js b/jstests/serverless/shard_split_timeseries_collections.js
index 611bffbfeaf..78214235e95 100644
--- a/jstests/serverless/shard_split_timeseries_collections.js
+++ b/jstests/serverless/shard_split_timeseries_collections.js
@@ -12,11 +12,7 @@
* ]
*/
-(function() {
-"use strict";
-
-load("jstests/libs/uuid_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
+import {ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
const test = new ShardSplitTest({
recipientSetName: "recipientSet",
@@ -40,4 +36,3 @@ assert.commandWorked(operation.commit());
operation.forget();
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_unblock_reads_and_writes_on_completion.js b/jstests/serverless/shard_split_unblock_reads_and_writes_on_completion.js
index e9f0fb65719..38d19bd2358 100644
--- a/jstests/serverless/shard_split_unblock_reads_and_writes_on_completion.js
+++ b/jstests/serverless/shard_split_unblock_reads_and_writes_on_completion.js
@@ -13,13 +13,7 @@
* ]
*/
-(function() {
-"use strict";
-
-load("jstests/libs/fail_point_util.js");
-load("jstests/libs/uuid_util.js");
-load("jstests/libs/write_concern_util.js");
-load("jstests/serverless/libs/shard_split_test.js");
+import {ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
function startReadThread(node, dbName, collName, afterClusterTime) {
let readThread = new Thread((host, dbName, collName, afterClusterTime) => {
@@ -205,4 +199,3 @@ const kCollName = "testColl";
test.stop();
})();
-})();
diff --git a/jstests/serverless/shard_split_wait_for_block_timestamp.js b/jstests/serverless/shard_split_wait_for_block_timestamp.js
index 4e8b7fc6f61..15cd8bc36a3 100644
--- a/jstests/serverless/shard_split_wait_for_block_timestamp.js
+++ b/jstests/serverless/shard_split_wait_for_block_timestamp.js
@@ -6,14 +6,15 @@
* @tags: [requires_fcv_62, serverless]
*/
+import {
+ assertMigrationState,
+ findSplitOperation,
+ ShardSplitTest
+} from "jstests/serverless/libs/shard_split_test.js";
+
load("jstests/libs/fail_point_util.js"); // for "configureFailPoint"
load("jstests/libs/write_concern_util.js"); // for "stopServerReplication"
load("jstests/noPassthrough/libs/server_parameter_helpers.js"); // for "setParameter"
-load('jstests/libs/parallel_shell_helpers.js'); // for "startParallelShell"
-load("jstests/serverless/libs/shard_split_test.js");
-
-(function() {
-"use strict";
// Skip db hash check because secondary is left with a different config.
TestData.skipCheckDBHashes = true;
@@ -63,4 +64,3 @@ secondOperation.forget();
test.waitForGarbageCollection(secondOperation.migrationId, tenantIds);
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_write_during_aborted_split.js b/jstests/serverless/shard_split_write_during_aborted_split.js
index 3d7ea1f1330..2bc4c644cb8 100644
--- a/jstests/serverless/shard_split_write_during_aborted_split.js
+++ b/jstests/serverless/shard_split_write_during_aborted_split.js
@@ -3,10 +3,7 @@
* @tags: [requires_fcv_62, serverless]
*/
-load("jstests/serverless/libs/shard_split_test.js");
-
-(function() {
-"use strict";
+import {ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
TestData.skipCheckDBHashes = true;
const test = new ShardSplitTest({
@@ -66,4 +63,3 @@ assert.commandFailedWithCode(splitThread.returnData(), ErrorCodes.TenantMigratio
writes.forEach(write => write.join());
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_write_during_shard_split.js b/jstests/serverless/shard_split_write_during_shard_split.js
index 59e6994e891..d1ab044a577 100644
--- a/jstests/serverless/shard_split_write_during_shard_split.js
+++ b/jstests/serverless/shard_split_write_during_shard_split.js
@@ -4,10 +4,7 @@
* @tags: [requires_fcv_62, serverless]
*/
-load("jstests/serverless/libs/shard_split_test.js");
-
-(function() {
-"use strict";
+import {doWriteOperations, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
const test = new ShardSplitTest();
test.addAndAwaitRecipientNodes();
@@ -53,4 +50,3 @@ writeResults.forEach(res => {
TestData.skipCheckDBHashes = true;
test.stop();
-})();
diff --git a/jstests/serverless/shard_split_write_during_split_stepdown.js b/jstests/serverless/shard_split_write_during_split_stepdown.js
index 83b8398e9c0..443549d5472 100644
--- a/jstests/serverless/shard_split_write_during_split_stepdown.js
+++ b/jstests/serverless/shard_split_write_during_split_stepdown.js
@@ -6,10 +6,7 @@
* @tags: [requires_fcv_62, serverless]
*/
-load("jstests/serverless/libs/shard_split_test.js");
-
-(function() {
-"use strict";
+import {doWriteOperations, ShardSplitTest} from "jstests/serverless/libs/shard_split_test.js";
const test = new ShardSplitTest({
nodeOptions: {
@@ -58,4 +55,3 @@ writeResults.forEach(res => {
TestData.skipCheckDBHashes = true;
test.stop();
-})();
diff --git a/src/mongo/scripting/mozjs/implscope.cpp b/src/mongo/scripting/mozjs/implscope.cpp
index fa5d95540aa..73c541e6161 100644
--- a/src/mongo/scripting/mozjs/implscope.cpp
+++ b/src/mongo/scripting/mozjs/implscope.cpp
@@ -665,7 +665,7 @@ void MozJSImplScope::_MozJSCreateFunction(StringData raw, JS::MutableHandleValue
bool MozJSImplScope::onSyncPromiseResolved(JSContext* cx, unsigned argc, JS::Value* vp) {
JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
auto scope = getScope(cx);
- scope->_promiseResult.emplace(args[0]);
+ scope->_promiseResult.emplace(cx, args[0]);
args.rval().setUndefined();
return true;
}
@@ -934,6 +934,10 @@ bool MozJSImplScope::exec(StringData code,
JSObject* modulePtr = nullptr;
if (shouldTryExecAsModule(_context, name, success)) {
+ // If we should run this as a module, we need to clear the previous exception in order
+ // to catch stack traces for future exceptions.
+ JS_ClearPendingException(_context);
+
modulePtr = _moduleLoader->loadRootModuleFromSource(_context, name, code);
success = modulePtr != nullptr;
}
@@ -963,6 +967,9 @@ bool MozJSImplScope::exec(StringData code,
if (success) {
JS::RootedObject evaluationPromise(_context, &out.toObject());
success = JS::ThrowOnModuleEvaluationFailure(_context, evaluationPromise);
+ if (success) {
+ success = awaitPromise(_context, evaluationPromise, &out);
+ }
}
}
}
diff --git a/src/mongo/scripting/mozjs/implscope.h b/src/mongo/scripting/mozjs/implscope.h
index 1a517b48944..0e0ce3e32cb 100644
--- a/src/mongo/scripting/mozjs/implscope.h
+++ b/src/mongo/scripting/mozjs/implscope.h
@@ -457,7 +457,7 @@ private:
std::unique_ptr<ModuleLoader> _moduleLoader;
std::unique_ptr<EnvironmentPreparer> _environmentPreparer;
- boost::optional<JS::HandleValue> _promiseResult;
+ boost::optional<JS::RootedValue> _promiseResult;
WrapType<BinDataInfo> _binDataProto;
WrapType<BSONInfo> _bsonProto;
diff --git a/src/mongo/scripting/mozjs/module_loader.cpp b/src/mongo/scripting/mozjs/module_loader.cpp
index 836a1a27892..9341e2c3ce5 100644
--- a/src/mongo/scripting/mozjs/module_loader.cpp
+++ b/src/mongo/scripting/mozjs/module_loader.cpp
@@ -217,18 +217,8 @@ JSString* ModuleLoader::resolveAndNormalize(JSContext* cx,
}
boost::system::error_code ec;
- auto fullPath = [&]() {
- if (!boost::filesystem::is_directory(refAbsPath)) {
- return boost::filesystem::canonical(specifierPath, refAbsPath.parent_path(), ec)
- .lexically_normal()
- .string();
- }
-
- return boost::filesystem::canonical(specifierPath, refAbsPath, ec)
- .lexically_normal()
- .string();
- }();
-
+ auto fullPath =
+ boost::filesystem::canonical(specifierPath, _baseUrl, ec).lexically_normal().string();
if (ec) {
if (ec.value() == boost::system::errc::no_such_file_or_directory) {
JS_ReportErrorUTF8(cx,