summaryrefslogtreecommitdiff
path: root/jstests/concurrency
diff options
context:
space:
mode:
authorJack Mulrow <jack.mulrow@mongodb.com>2018-12-17 17:59:43 -0500
committerJack Mulrow <jack.mulrow@mongodb.com>2018-12-20 17:26:34 -0500
commit27c179577c031eec0b1c71f8e9e2aee7d23cc114 (patch)
tree14d4e63096223959a213eac7742e89d98f9f8506 /jstests/concurrency
parentddaa9193bfead92fe833edbeecc63c046d4424fa (diff)
downloadmongo-27c179577c031eec0b1c71f8e9e2aee7d23cc114.tar.gz
SERVER-33983 Add concurrency sharded transaction passthroughs using majority read concern
Diffstat (limited to 'jstests/concurrency')
-rw-r--r--jstests/concurrency/fsm_libs/resmoke_runner.js25
-rw-r--r--jstests/concurrency/fsm_workload_helpers/auto_retry_transaction.js4
-rw-r--r--jstests/concurrency/fsm_workloads/multi_statement_transaction_all_commands_same_session.js2
-rw-r--r--jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation.js2
-rw-r--r--jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation_metrics_test.js2
-rw-r--r--jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation_multi_db.js2
-rw-r--r--jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation_repeated_reads.js2
-rw-r--r--jstests/concurrency/fsm_workloads/multi_statement_transaction_kill_sessions_atomicity_isolation.js2
-rw-r--r--jstests/concurrency/fsm_workloads/multi_statement_transaction_simple.js2
-rw-r--r--jstests/concurrency/fsm_workloads/multi_statement_transaction_simple_repeated_reads.js2
10 files changed, 30 insertions, 15 deletions
diff --git a/jstests/concurrency/fsm_libs/resmoke_runner.js b/jstests/concurrency/fsm_libs/resmoke_runner.js
index 4af4555cb82..2b6b1512bed 100644
--- a/jstests/concurrency/fsm_libs/resmoke_runner.js
+++ b/jstests/concurrency/fsm_libs/resmoke_runner.js
@@ -105,10 +105,17 @@
cluster.awaitReplication();
}
+ // Transactions run at snapshot read concern unless defaultTransactionReadConcernLevel
+ // is set to another level.
+ const transactionsWouldUseSnapshotReadConcern =
+ !TestData.hasOwnProperty("defaultTransactionReadConcernLevel") ||
+ TestData.defaultTransactionReadConcernLevel === "snapshot";
+
// Synchronize the cluster times across all routers if the tests will be overriden to
// use transactions, so the earliest global snapshots chosen by each router will include
- // the effects of each setup function.
- if (cluster.isSharded() && TestData.runInsideTransaction) {
+ // the effects of each setup function. This is only required for snapshot read concern.
+ if (cluster.isSharded() && TestData.runInsideTransaction &&
+ transactionsWouldUseSnapshotReadConcern) {
cluster.synchronizeMongosClusterTimes();
}
@@ -244,12 +251,18 @@
let workloads = TestData.fsmWorkloads;
let sessionOptions = {};
- if (TestData.runningWithCausalConsistency) {
- sessionOptions = Object.assign(
- sessionOptions, {causalConsistency: true, readPreference: {mode: 'secondary'}});
+ if (TestData.runningWithCausalConsistency !== undefined) {
+ // Explicit sessions are causally consistent by default, so causal consistency has to be
+ // explicitly disabled.
+ sessionOptions.causalConsistency = TestData.runningWithCausalConsistency;
+
+ if (TestData.runningWithCausalConsistency) {
+ sessionOptions.readPreference = {mode: 'secondary'};
+ }
}
+
if (TestData.runningWithConfigStepdowns || TestData.runningWithShardStepdowns) {
- sessionOptions = Object.assign(sessionOptions, {retryWrites: true});
+ sessionOptions.retryWrites = true;
}
const executionOptions = {dbNamePrefix: TestData.dbNamePrefix || ""};
diff --git a/jstests/concurrency/fsm_workload_helpers/auto_retry_transaction.js b/jstests/concurrency/fsm_workload_helpers/auto_retry_transaction.js
index faa5418be24..8877363e2a4 100644
--- a/jstests/concurrency/fsm_workload_helpers/auto_retry_transaction.js
+++ b/jstests/concurrency/fsm_workload_helpers/auto_retry_transaction.js
@@ -31,7 +31,9 @@ var {withTxnAndAutoRetry} = (function() {
* after the withTxnAndAutoRetry() function returns.
*/
function withTxnAndAutoRetry(session, func, {
- txnOptions: txnOptions = {readConcern: {level: 'snapshot'}},
+ txnOptions: txnOptions = {
+ readConcern: {level: TestData.defaultTransactionReadConcernLevel || 'snapshot'}
+ },
retryOnKilledSession: retryOnKilledSession = false,
prepareProbability: prepareProbability = 0.0
} = {}) {
diff --git a/jstests/concurrency/fsm_workloads/multi_statement_transaction_all_commands_same_session.js b/jstests/concurrency/fsm_workloads/multi_statement_transaction_all_commands_same_session.js
index 0931ad6ce13..11aaac9cdac 100644
--- a/jstests/concurrency/fsm_workloads/multi_statement_transaction_all_commands_same_session.js
+++ b/jstests/concurrency/fsm_workloads/multi_statement_transaction_all_commands_same_session.js
@@ -4,7 +4,7 @@
* Runs update, findAndModify, delete, find, and getMore in a transaction with all threads using the
* same session.
*
- * @tags: [uses_transactions, state_functions_share_transaction]
+ * @tags: [uses_transactions, state_functions_share_transaction, assumes_snapshot_transactions]
*/
load('jstests/concurrency/fsm_libs/extend_workload.js'); // for extendWorkload
diff --git a/jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation.js b/jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation.js
index 1d45ed672dc..c2401d6a0a5 100644
--- a/jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation.js
+++ b/jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation.js
@@ -39,7 +39,7 @@
* (tid, txnNumber) for the thread with threadId == tid. This indicates that there are writes
* that exist in the database that were not committed.
*
- * @tags: [uses_transactions]
+ * @tags: [uses_transactions, assumes_snapshot_transactions]
*/
// for Graph
diff --git a/jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation_metrics_test.js b/jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation_metrics_test.js
index e567ded0e25..8199189293b 100644
--- a/jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation_metrics_test.js
+++ b/jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation_metrics_test.js
@@ -4,7 +4,7 @@
* This test checks high level invariants of various transaction related metrics reported in
* serverStatus and currentOp.
*
- * @tags: [uses_transactions, uses_prepare_transaction]
+ * @tags: [uses_transactions, uses_prepare_transaction, assumes_snapshot_transactions]
*/
load('jstests/concurrency/fsm_libs/extend_workload.js'); // for extendWorkload
diff --git a/jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation_multi_db.js b/jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation_multi_db.js
index 266a7ceb8cb..417cf05aa41 100644
--- a/jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation_multi_db.js
+++ b/jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation_multi_db.js
@@ -3,7 +3,7 @@
/**
* Test transactions atomicity and isolation guarantees for transactions across multiple DBs.
*
- * @tags: [uses_transactions]
+ * @tags: [uses_transactions, assumes_snapshot_transactions]
*/
load('jstests/concurrency/fsm_libs/extend_workload.js'); // for extendWorkload
diff --git a/jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation_repeated_reads.js b/jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation_repeated_reads.js
index d02004acd25..10e76270a3e 100644
--- a/jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation_repeated_reads.js
+++ b/jstests/concurrency/fsm_workloads/multi_statement_transaction_atomicity_isolation_repeated_reads.js
@@ -3,7 +3,7 @@
/**
* Performs repeated reads of the documents in the collection to test snapshot isolation.
*
- * @tags: [uses_transactions]
+ * @tags: [uses_transactions, assumes_snapshot_transactions]
*/
load('jstests/concurrency/fsm_libs/extend_workload.js'); // for extendWorkload
diff --git a/jstests/concurrency/fsm_workloads/multi_statement_transaction_kill_sessions_atomicity_isolation.js b/jstests/concurrency/fsm_workloads/multi_statement_transaction_kill_sessions_atomicity_isolation.js
index 4c66bdbb6ce..bc3680c3a75 100644
--- a/jstests/concurrency/fsm_workloads/multi_statement_transaction_kill_sessions_atomicity_isolation.js
+++ b/jstests/concurrency/fsm_workloads/multi_statement_transaction_kill_sessions_atomicity_isolation.js
@@ -3,7 +3,7 @@
/**
* Tests periodically killing sessions that are running transactions.
*
- * @tags: [uses_transactions]
+ * @tags: [uses_transactions, assumes_snapshot_transactions]
*/
load('jstests/concurrency/fsm_libs/extend_workload.js'); // for extendWorkload
diff --git a/jstests/concurrency/fsm_workloads/multi_statement_transaction_simple.js b/jstests/concurrency/fsm_workloads/multi_statement_transaction_simple.js
index dfc7b7f4335..17acf7c4824 100644
--- a/jstests/concurrency/fsm_workloads/multi_statement_transaction_simple.js
+++ b/jstests/concurrency/fsm_workloads/multi_statement_transaction_simple.js
@@ -5,7 +5,7 @@
* - chooses two accounts and amount of money being transfer
* - or checks the balance of each account
*
- * @tags: [uses_transactions]
+ * @tags: [uses_transactions, assumes_snapshot_transactions]
*/
// For withTxnAndAutoRetry.
diff --git a/jstests/concurrency/fsm_workloads/multi_statement_transaction_simple_repeated_reads.js b/jstests/concurrency/fsm_workloads/multi_statement_transaction_simple_repeated_reads.js
index 4ea2e8df184..a6a821e207a 100644
--- a/jstests/concurrency/fsm_workloads/multi_statement_transaction_simple_repeated_reads.js
+++ b/jstests/concurrency/fsm_workloads/multi_statement_transaction_simple_repeated_reads.js
@@ -3,7 +3,7 @@
/**
* Performs repeated reads of the documents in the collection to test snapshot isolation.
*
- * @tags: [uses_transactions]
+ * @tags: [uses_transactions, assumes_snapshot_transactions]
*/
load('jstests/concurrency/fsm_libs/extend_workload.js'); // for extendWorkload