summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCheahuychou Mao <cheahuychou.mao@mongodb.com>2020-05-09 17:19:33 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-05-11 21:35:57 +0000
commit8b8488340f53a71f29f40ead546e36c59323ca93 (patch)
treee38619051c07f98a4e187ac258c55c575bb4a860
parenteece046bc52f886af3de2ab7303b768a74ef23a9 (diff)
downloadmongo-8b8488340f53a71f29f40ead546e36c59323ca93.tar.gz
SERVER-48060 Make tests only server parameter for making transaction coordinator return decision early if the shards are in latest binVersion
-rw-r--r--jstests/sharding/libs/sharded_transactions_helpers.js20
-rw-r--r--jstests/sharding/transactions_multi_writes.js8
-rw-r--r--jstests/sharding/txn_commit_optimizations_for_read_only_shards.js3
-rw-r--r--jstests/sharding/txn_recover_decision_using_recovery_router.js12
-rw-r--r--jstests/sharding/update_compound_shard_key.js10
-rw-r--r--jstests/sharding/update_shard_key_conflicting_writes.js7
-rw-r--r--jstests/sharding/update_shard_key_doc_moves_shards.js8
-rw-r--r--jstests/sharding/update_shard_key_doc_on_same_shard.js8
-rw-r--r--jstests/sharding/update_shard_key_pipeline_update.js8
-rw-r--r--jstests/sharding/update_sharded.js10
10 files changed, 45 insertions, 49 deletions
diff --git a/jstests/sharding/libs/sharded_transactions_helpers.js b/jstests/sharding/libs/sharded_transactions_helpers.js
index 38579460dce..d5065493bcb 100644
--- a/jstests/sharding/libs/sharded_transactions_helpers.js
+++ b/jstests/sharding/libs/sharded_transactions_helpers.js
@@ -121,6 +121,26 @@ function waitForFailpoint(hitFailpointStr, numTimes, timeout) {
{runHangAnalyzer: false});
}
+/*
+ * If all shards in the cluster have binVersion "lastest", sets the server parameter for
+ * making the transaction coordinator return decision early to true.
+ * TODO (SERVER-48114): Remove this function.
+ */
+function enableCoordinateCommitReturnImmediatelyAfterPersistingDecision(st) {
+ if (jsTest.options().shardMixedBinVersions ||
+ jsTest.options().useRandomBinVersionsWithinReplicaSet)
+ return;
+
+ st._rs.forEach(rs => {
+ rs.nodes.forEach(node => {
+ assert.commandWorked(node.getDB('admin').runCommand({
+ setParameter: 1,
+ "coordinateCommitReturnImmediatelyAfterPersistingDecision": true
+ }));
+ });
+ });
+}
+
// Enables the transaction router to retry on stale version (db or shard version) and snapshot
// errors within a transaction.
//
diff --git a/jstests/sharding/transactions_multi_writes.js b/jstests/sharding/transactions_multi_writes.js
index d784dacea63..fd2b6139ed4 100644
--- a/jstests/sharding/transactions_multi_writes.js
+++ b/jstests/sharding/transactions_multi_writes.js
@@ -16,13 +16,9 @@ const dbName = "test";
const collName = "foo";
const ns = dbName + "." + collName;
-const st = new ShardingTest({
- shards: 3,
- config: 1,
- mongos: 2,
- shardOptions: {setParameter: {"coordinateCommitReturnImmediatelyAfterPersistingDecision": true}}
-});
+const st = new ShardingTest({shards: 3, config: 1, mongos: 2});
+enableCoordinateCommitReturnImmediatelyAfterPersistingDecision(st);
enableStaleVersionAndSnapshotRetriesWithinTransactions(st);
// Set up a sharded collection with 3 chunks, [min, 0), [0, 10), [10, max), one on each shard,
diff --git a/jstests/sharding/txn_commit_optimizations_for_read_only_shards.js b/jstests/sharding/txn_commit_optimizations_for_read_only_shards.js
index 102a3ac7212..7891b65f1b5 100644
--- a/jstests/sharding/txn_commit_optimizations_for_read_only_shards.js
+++ b/jstests/sharding/txn_commit_optimizations_for_read_only_shards.js
@@ -60,14 +60,13 @@ let st = new ShardingTest({
config: 1,
other: {
mongosOptions: {verbose: 3},
- shardOptions:
- {setParameter: {"coordinateCommitReturnImmediatelyAfterPersistingDecision": true}},
rs0: {nodes: [{}, {rsConfig: {priority: 0}}]},
rs1: {nodes: [{}, {rsConfig: {priority: 0}}]},
rs2: {nodes: [{}, {rsConfig: {priority: 0}}]},
},
});
+enableCoordinateCommitReturnImmediatelyAfterPersistingDecision(st);
assert.commandWorked(st.s.adminCommand({enableSharding: dbName}));
assert.commandWorked(st.s.adminCommand({movePrimary: dbName, to: st.shard1.shardName}));
diff --git a/jstests/sharding/txn_recover_decision_using_recovery_router.js b/jstests/sharding/txn_recover_decision_using_recovery_router.js
index 5eb669b05f4..0c16dd7664f 100644
--- a/jstests/sharding/txn_recover_decision_using_recovery_router.js
+++ b/jstests/sharding/txn_recover_decision_using_recovery_router.js
@@ -175,16 +175,8 @@ const sendCommitViaRecoveryMongos = function(lsid, txnNumber, recoveryToken, wri
writeConcern));
};
-let st = new ShardingTest({
- shards: 2,
- rs: {nodes: 2},
- mongos: 2,
- other: {
- mongosOptions: {verbose: 3},
- shardOptions:
- {setParameter: {"coordinateCommitReturnImmediatelyAfterPersistingDecision": true}}
- }
-});
+let st =
+ new ShardingTest({shards: 2, rs: {nodes: 2}, mongos: 2, other: {mongosOptions: {verbose: 3}}});
assert.commandWorked(st.s0.adminCommand({enableSharding: 'test'}));
st.ensurePrimaryShard('test', st.shard0.name);
diff --git a/jstests/sharding/update_compound_shard_key.js b/jstests/sharding/update_compound_shard_key.js
index bf84e4179e1..a534451ae9e 100644
--- a/jstests/sharding/update_compound_shard_key.js
+++ b/jstests/sharding/update_compound_shard_key.js
@@ -14,13 +14,13 @@
(function() {
'use strict';
+load("jstests/sharding/libs/sharded_transactions_helpers.js");
load("jstests/sharding/libs/update_shard_key_helpers.js");
-const st = new ShardingTest({
- mongos: 1,
- shards: 3,
- shardOptions: {setParameter: {"coordinateCommitReturnImmediatelyAfterPersistingDecision": true}}
-});
+const st = new ShardingTest({mongos: 1, shards: 3});
+
+enableCoordinateCommitReturnImmediatelyAfterPersistingDecision(st);
+
const kDbName = 'update_compound_sk';
const ns = kDbName + '.coll';
const session = st.s.startSession({retryWrites: true});
diff --git a/jstests/sharding/update_shard_key_conflicting_writes.js b/jstests/sharding/update_shard_key_conflicting_writes.js
index a22c21b1ca6..c654c26e4f6 100644
--- a/jstests/sharding/update_shard_key_conflicting_writes.js
+++ b/jstests/sharding/update_shard_key_conflicting_writes.js
@@ -20,16 +20,13 @@
load('jstests/libs/parallelTester.js'); // for Thread.
load('jstests/sharding/libs/sharded_transactions_helpers.js');
-let st = new ShardingTest({
- mongos: 1,
- shards: 2,
- shardOptions: {setParameter: {"coordinateCommitReturnImmediatelyAfterPersistingDecision": true}}
-});
+let st = new ShardingTest({mongos: 1, shards: 2});
let kDbName = 'db';
let mongos = st.s0;
let ns = kDbName + '.foo';
let db = mongos.getDB(kDbName);
+enableCoordinateCommitReturnImmediatelyAfterPersistingDecision(st);
assert.commandWorked(mongos.adminCommand({enableSharding: kDbName}));
st.ensurePrimaryShard(kDbName, st.shard0.shardName);
diff --git a/jstests/sharding/update_shard_key_doc_moves_shards.js b/jstests/sharding/update_shard_key_doc_moves_shards.js
index 4c001ea337a..ed5c9868b44 100644
--- a/jstests/sharding/update_shard_key_doc_moves_shards.js
+++ b/jstests/sharding/update_shard_key_doc_moves_shards.js
@@ -7,19 +7,17 @@
(function() {
'use strict';
+load("jstests/sharding/libs/sharded_transactions_helpers.js");
load("jstests/sharding/libs/update_shard_key_helpers.js");
-const st = new ShardingTest({
- mongos: 1,
- shards: {rs0: {nodes: 3}, rs1: {nodes: 3}},
- shardOptions: {setParameter: {"coordinateCommitReturnImmediatelyAfterPersistingDecision": true}}
-});
+const st = new ShardingTest({mongos: 1, shards: {rs0: {nodes: 3}, rs1: {nodes: 3}}});
const kDbName = 'db';
const mongos = st.s0;
const shard0 = st.shard0.shardName;
const shard1 = st.shard1.shardName;
const ns = kDbName + '.foo';
+enableCoordinateCommitReturnImmediatelyAfterPersistingDecision(st);
assert.commandWorked(mongos.adminCommand({enableSharding: kDbName}));
st.ensurePrimaryShard(kDbName, shard0);
diff --git a/jstests/sharding/update_shard_key_doc_on_same_shard.js b/jstests/sharding/update_shard_key_doc_on_same_shard.js
index fecba427593..2fc7a0b2402 100644
--- a/jstests/sharding/update_shard_key_doc_on_same_shard.js
+++ b/jstests/sharding/update_shard_key_doc_on_same_shard.js
@@ -7,19 +7,17 @@
(function() {
'use strict';
+load("jstests/sharding/libs/sharded_transactions_helpers.js");
load("jstests/sharding/libs/update_shard_key_helpers.js");
-const st = new ShardingTest({
- mongos: 1,
- shards: {rs0: {nodes: 3}, rs1: {nodes: 3}},
- shardOptions: {setParameter: {"coordinateCommitReturnImmediatelyAfterPersistingDecision": true}}
-});
+const st = new ShardingTest({mongos: 1, shards: {rs0: {nodes: 3}, rs1: {nodes: 3}}});
const kDbName = 'db';
const ns = kDbName + '.foo';
const mongos = st.s0;
const shard0 = st.shard0.shardName;
const shard1 = st.shard1.shardName;
+enableCoordinateCommitReturnImmediatelyAfterPersistingDecision(st);
assert.commandWorked(mongos.adminCommand({enableSharding: kDbName}));
st.ensurePrimaryShard(kDbName, shard0);
diff --git a/jstests/sharding/update_shard_key_pipeline_update.js b/jstests/sharding/update_shard_key_pipeline_update.js
index bf366883322..f632d058b74 100644
--- a/jstests/sharding/update_shard_key_pipeline_update.js
+++ b/jstests/sharding/update_shard_key_pipeline_update.js
@@ -6,19 +6,17 @@
(function() {
'use strict';
+load("jstests/sharding/libs/sharded_transactions_helpers.js");
load("jstests/sharding/libs/update_shard_key_helpers.js");
-const st = new ShardingTest({
- mongos: 1,
- shards: {rs0: {nodes: 3}, rs1: {nodes: 3}},
- shardOptions: {setParameter: {"coordinateCommitReturnImmediatelyAfterPersistingDecision": true}}
-});
+const st = new ShardingTest({mongos: 1, shards: {rs0: {nodes: 3}, rs1: {nodes: 3}}});
const kDbName = 'db';
const mongos = st.s0;
const shard0 = st.shard0.shardName;
const shard1 = st.shard1.shardName;
const ns = kDbName + '.foo';
+enableCoordinateCommitReturnImmediatelyAfterPersistingDecision(st);
assert.commandWorked(mongos.adminCommand({enableSharding: kDbName}));
st.ensurePrimaryShard(kDbName, shard0);
diff --git a/jstests/sharding/update_sharded.js b/jstests/sharding/update_sharded.js
index 4a86489783a..1b96744c260 100644
--- a/jstests/sharding/update_sharded.js
+++ b/jstests/sharding/update_sharded.js
@@ -13,13 +13,11 @@
// ]
(function() {
-const s = new ShardingTest({
- name: "auto1",
- shards: 2,
- mongos: 1,
- shardOptions: {setParameter: {"coordinateCommitReturnImmediatelyAfterPersistingDecision": true}}
-});
+load("jstests/sharding/libs/sharded_transactions_helpers.js");
+const s = new ShardingTest({name: "auto1", shards: 2, mongos: 1});
+
+enableCoordinateCommitReturnImmediatelyAfterPersistingDecision(s);
s.adminCommand({enablesharding: "test"});
s.ensurePrimaryShard('test', s.shard1.shardName);