summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbdul Qadeer <abdul.qadeer@mongodb.com>2024-09-17 23:55:04 +0530
committerMongoDB Bot <mongo-bot@mongodb.com>2024-09-17 19:59:05 +0000
commit09fe0ee4f033e1b7d26c9b40c82cbdf16928c813 (patch)
tree5cbe0eaa99d4bfd9c4ce3ea984fd3b3e9837f6d2
parentf7d361e3e87a134f491d24da617e8ffc50608d69 (diff)
SERVER-94866 Replace parallel shell with thread (#27173)
GitOrigin-RevId: cc3005e350367cd160d4abb65f00400a18acb8c8
-rw-r--r--jstests/sharding/txn_two_phase_commit_failover.js78
1 files changed, 42 insertions, 36 deletions
diff --git a/jstests/sharding/txn_two_phase_commit_failover.js b/jstests/sharding/txn_two_phase_commit_failover.js
index db4d3a3cc6b..0a65d253113 100644
--- a/jstests/sharding/txn_two_phase_commit_failover.js
+++ b/jstests/sharding/txn_two_phase_commit_failover.js
@@ -15,9 +15,10 @@ import {
waitForFailpoint,
flushRoutersAndRefreshShardMetadata,
} from "jstests/sharding/libs/sharded_transactions_helpers.js";
-import {funWithArgs} from "jstests/libs/parallel_shell_helpers.js";
import {ReplSetTest} from "jstests/libs/replsettest.js";
import {ShardingTest} from "jstests/libs/shardingtest.js";
+import {Thread} from "jstests/libs/parallelTester.js";
+import {extractUUIDFromObject} from "jstests/libs/uuid_util.js";
const dbName = "test";
const collName = "foo";
@@ -56,38 +57,36 @@ const runTest = function(sameNodeStepsUpAfterFailover) {
let participant1 = st.shard1;
let participant2 = st.shard2;
- const runCommitThroughMongosInParallelShellExpectSuccess = function() {
- return startParallelShell(
- funWithArgs((passed_lsid, passed_txnNumber) => {
- try {
- assert.commandWorked(db.adminCommand({
- commitTransaction: 1,
- lsid: passed_lsid,
- txnNumber: NumberLong(passed_txnNumber),
- stmtId: NumberInt(0),
- autocommit: false,
- }));
- } catch (err) {
- if ((err.hasOwnProperty('errorLabels') &&
- err.errorLabels.includes('TransientTransactionError'))) {
- quit(err.code);
- } else {
- throw err;
- }
- }
- }, lsid, txnNumber), st.s.port);
+ const runCommitThroughMongosExpectSuccess = function(lsidUUID, txnNumber, mongosHost) {
+ const conn = new Mongo(mongosHost);
+ try {
+ assert.commandWorked(conn.adminCommand({
+ commitTransaction: 1,
+ lsid: {id: UUID(lsidUUID)},
+ txnNumber: NumberLong(txnNumber),
+ stmtId: NumberInt(0),
+ autocommit: false,
+ }));
+ } catch (err) {
+ if ((err.hasOwnProperty('errorLabels') &&
+ err.errorLabels.includes('TransientTransactionError'))) {
+ quit(err.code);
+ } else {
+ throw err;
+ }
+ }
};
- const runCommitThroughMongosInParallelShellExpectAbort = function() {
- const runCommitExpectSuccessCode = "assert.commandFailedWithCode(db.adminCommand({" +
- "commitTransaction: 1," +
- "lsid: " + tojson(lsid) + "," +
- "txnNumber: NumberLong(" + txnNumber + ")," +
- "stmtId: NumberInt(0)," +
- "autocommit: false," +
- "})," +
- "ErrorCodes.NoSuchTransaction);";
- return startParallelShell(runCommitExpectSuccessCode, st.s.port);
+ const runCommitThroughMongosExpectAbort = function(lsidUUID, txnNumber, mongosHost) {
+ const conn = new Mongo(mongosHost);
+ assert.commandFailedWithCode(conn.adminCommand({
+ commitTransaction: 1,
+ lsid: {id: UUID(lsidUUID)},
+ txnNumber: NumberLong(txnNumber),
+ stmtId: NumberInt(0),
+ autocommit: false,
+ }),
+ ErrorCodes.NoSuchTransaction);
};
const setUp = function() {
@@ -154,13 +153,20 @@ const runTest = function(sameNodeStepsUpAfterFailover) {
data: failpointData.data ? failpointData.data : {},
}));
- // Run commitTransaction through a parallel shell.
- let awaitResult;
+ // Run commitTransaction through a thread.
+ let commitThread;
if (expectAbortResponse) {
- awaitResult = runCommitThroughMongosInParallelShellExpectAbort();
+ commitThread = new Thread(runCommitThroughMongosExpectAbort,
+ extractUUIDFromObject(lsid.id),
+ txnNumber,
+ st.s.host);
} else {
- awaitResult = runCommitThroughMongosInParallelShellExpectSuccess();
+ commitThread = new Thread(runCommitThroughMongosExpectSuccess,
+ extractUUIDFromObject(lsid.id),
+ txnNumber,
+ st.s.host);
}
+ commitThread.start();
waitForFailpoint("Hit " + failpointData.failpoint + " failpoint",
failpointData.numTimesShouldBeHit);
@@ -177,7 +183,7 @@ const runTest = function(sameNodeStepsUpAfterFailover) {
}));
// The router should retry commitTransaction against the new primary.
- awaitResult();
+ commitThread.join();
// Check that the transaction committed or aborted as expected.
if (expectAbortResponse) {