diff options
author | Cheahuychou Mao <cheahuychou.mao@mongodb.com> | 2020-05-09 17:19:33 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-05-11 21:35:57 +0000 |
commit | 8b8488340f53a71f29f40ead546e36c59323ca93 (patch) | |
tree | e38619051c07f98a4e187ac258c55c575bb4a860 | |
parent | eece046bc52f886af3de2ab7303b768a74ef23a9 (diff) | |
download | mongo-8b8488340f53a71f29f40ead546e36c59323ca93.tar.gz |
SERVER-48060 Make tests only server parameter for making transaction coordinator return decision early if the shards are in latest binVersion
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); |