summaryrefslogtreecommitdiff
path: root/buildscripts/resmokeconfig/suites/replica_sets_reconfig_kill_primary_jscore_passthrough.yml
diff options
context:
space:
mode:
authorPavi Vetriselvan <pvselvan@umich.edu>2020-03-16 11:13:36 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-05-14 12:42:24 +0000
commitf4528563033d933ca920b3e4b2a5e3344e198a5c (patch)
tree8c20856b344e02483dceb1e13f35533e41db3ecd /buildscripts/resmokeconfig/suites/replica_sets_reconfig_kill_primary_jscore_passthrough.yml
parentcd9fbb56900343e7b1193922a2c4b197895e7f56 (diff)
downloadmongo-f4528563033d933ca920b3e4b2a5e3344e198a5c.tar.gz
SERVER-45094 add disabled replica set reconfig passthroughs
SERVER-45094 add retryable read logic to network_error_and_txn_override.js (cherry picked from commit f59f63db6c37c0d4657b57d559c95d830b0e34c2) SERVER-45094 add replica_sets_reconfig_jscore_passthrough suite (cherry picked from commit 4d91fac171cbe3f2af53d9258965399e648a1947) SERVER-45094 use w:1 writes and remove causal consistency in reconfig passthrough (cherry picked from commit a43cb23defc6182d08a7814e4731ef98f2d30b6a) SERVER-45094 add replica_sets_reconfig_jscore_stepdown_passthrough (cherry picked from commit 81e0ad27c280c02a49beb65ff4473d5dce62b089) SERVER-45094 add replica_sets_reconfig_kill_primary_jscore_passthrough (cherry picked from commit 2debab7987b24bf902f9a128654ce928441c29a2) SERVER-47678 stepdown and kill primary reconfig passthroughs should ignore ReplicaSetMonitorErrors (cherry picked from commit 91672e58f1169c7edd684b911f20f62b8a71f8d1) SERVER-47544 always increase election timeout to 24 hours in passthrough suites (cherry picked from commit 81d53a715f49827a9f2538d4572f9b01f2b12887)
Diffstat (limited to 'buildscripts/resmokeconfig/suites/replica_sets_reconfig_kill_primary_jscore_passthrough.yml')
-rw-r--r--buildscripts/resmokeconfig/suites/replica_sets_reconfig_kill_primary_jscore_passthrough.yml214
1 files changed, 214 insertions, 0 deletions
diff --git a/buildscripts/resmokeconfig/suites/replica_sets_reconfig_kill_primary_jscore_passthrough.yml b/buildscripts/resmokeconfig/suites/replica_sets_reconfig_kill_primary_jscore_passthrough.yml
new file mode 100644
index 00000000000..6c973e3dd06
--- /dev/null
+++ b/buildscripts/resmokeconfig/suites/replica_sets_reconfig_kill_primary_jscore_passthrough.yml
@@ -0,0 +1,214 @@
+test_kind: js_test
+# This suite starts a 5-node replica set and runs both the DoReconfigInBackground and
+# ContinuousStepdown hook with kill: true and background_reconfig: true to periodically run
+# safe reconfigs and send kill signals to the primary.
+# This tests that the concurrency between killing the primary and reconfigs is still
+# ultimately safe.
+
+selector:
+ roots:
+ - jstests/core/**/*.js
+ exclude_files:
+ # Transactions do not support retryability of individual operations.
+ # TODO: Remove this once it is supported (SERVER-33952).
+ - jstests/core/txns/**/*.js
+ # These tests are not expected to pass with replica-sets:
+ - jstests/core/dbadmin.js
+ - jstests/core/opcounters_write_cmd.js
+ - jstests/core/read_after_optime.js
+ - jstests/core/capped_update.js
+ # The set_param1.js test attempts to compare the response from running the {getParameter: "*"}
+ # command multiple times, which may observe the change to the "transactionLifetimeLimitSeconds"
+ # server parameter.
+ - jstests/core/set_param1.js
+
+ # No-op retries are not ignored by top, the profiler, or opcount.
+ - jstests/core/operation_latency_histogram.js
+ - jstests/core/profile2.js
+ - jstests/core/profile3.js
+ - jstests/core/profile_findandmodify.js
+ - jstests/core/top.js
+ - jstests/core/views/views_stats.js
+
+ # TODO SERVER-31249: getLastError should not be affected by no-op retries.
+ - jstests/core/bulk_legacy_enforce_gle.js
+
+ # TODO SERVER-31242: findAndModify no-op retry should respect the fields option.
+ - jstests/core/crud_api.js
+ - jstests/core/find_and_modify.js
+ - jstests/core/find_and_modify2.js
+ - jstests/core/find_and_modify_pipeline_update.js
+ - jstests/core/find_and_modify_server6865.js
+
+ # These test run commands using legacy queries, which are not supported on sessions.
+ - jstests/core/comment_field.js
+ - jstests/core/exhaust.js
+ - jstests/core/validate_cmd_ns.js
+
+ # Stepdown commands during fsync lock will fail.
+ - jstests/core/currentop.js
+ - jstests/core/fsync.js
+ - jstests/core/killop_drop_collection.js
+
+ # Assert on the ismaster field of an isMaster response. If a primary steps down after accepting
+ # an isMaster command and returns before its connection is closed, the response can contain
+ # ismaster: false.
+ - jstests/core/dbadmin.js
+ - jstests/core/ismaster.js
+
+ # Spawns new mongo shells, which don't retry connecting on stepdown errors.
+ - jstests/core/shell_connection_strings.js
+
+ # Expect drops/creates to fail or have a certain response:
+ - jstests/core/drop.js
+ - jstests/core/dropdb.js
+ - jstests/core/explain_upsert.js
+ - jstests/core/indexes_multiple_commands.js
+
+ # Expect certain responses, but retries of successfully completed commands may return
+ # different values:
+ - jstests/core/create_indexes.js
+ - jstests/core/objid5.js
+
+ # Unacknowledged writes prohibited in an explicit session.
+ - jstests/core/batch_write_command_w0.js
+
+ - jstests/core/bench_test*.js # benchRun() used for writes
+ - jstests/core/benchrun_pipeline_updates.js # benchRun() used for writes
+ - jstests/core/connection_string_validation.js # Does not expect a replica set connection string.
+ - jstests/core/list_collections_filter.js # Temporary collections are dropped on failover.
+ - jstests/core/top.js # Tests read commands (including getMore) against the secondary
+ - jstests/core/drop3.js # getMore is not causally consistent if collection is dropped
+ - jstests/core/validate_cmd_ns.js # Calls _exec() directly, not retryable.
+ - jstests/core/list_collections_filter.js # Temporary collections are dropped on failover.
+ - jstests/core/explain_large_bounds.js # Stepdown can timeout waiting for global lock.
+
+ # Tests that fail for Causal Consistency as they have statements that do not support
+ # non-local read concern.
+ - jstests/core/collation.js
+ # Starts a parallel shell but won't restart it after unclean shutdown.
+ # TODO SERVER-33229: Remove these exclusions
+ - jstests/core/compact_keeps_indexes.js
+ - jstests/core/benchrun_pipeline_updates.js
+ - jstests/core/find_and_modify_concurrent_update.js
+ - jstests/core/shellstartparallel.js
+
+ # Inserts enough data that recovery takes more than 8 seconds, so we never get a working primary.
+ - jstests/core/geo_s2ordering.js
+
+ exclude_with_any_tags:
+ ##
+ # The next four tags correspond to the special errors thrown by the auto_retry_on_network_error.js
+ # override when it refuses to run a certain command. Above each tag are the message(s) that cause
+ # the tag to be warranted.
+ ##
+ # "Refusing to run a test that issues a getMore command since if a network error occurs during
+ # it then we won't know whether the cursor was advanced or not"
+ - requires_getmore
+ # "Refusing to run a test that issues non-retryable write operations since the test likely makes
+ # assertions on the write results and can lead to spurious failures if a network error occurs"
+ - requires_non_retryable_writes
+ # "Refusing to run a test that issues commands that are not blindly retryable"
+ # "Refusing to run a test that issues an aggregation command with $out because it is not
+ # retryable"
+ - requires_non_retryable_commands
+ # "Refusing to run a test that issues commands that may return different values after a failover"
+ # "Refusing to run a test that issues an aggregation command with explain because it may return
+ # incomplete results"
+ # "Refusing to run a test that issues an aggregation command with
+ # $listLocalSessions because it relies on in-memory state that may not survive failovers"
+ # "Refusing to run a test that issues a mapReduce command, because it calls std::terminate() if
+ # interrupted by a stepdown"
+ - does_not_support_stepdowns
+ ##
+ # The next two tags correspond to the special errors thrown by the
+ # set_read_and_write_concerns.js override when it refuses to replace the readConcern or
+ # writeConcern of a particular command. Above each tag are the message(s) that cause the tag to be
+ # warranted.
+ ##
+ # "Cowardly refusing to override read concern of command: ..."
+ - assumes_read_concern_unchanged
+ # "Cowardly refusing to override write concern of command: ..."
+ - assumes_write_concern_unchanged
+ ##
+ # The next three tags corresponds to the special errors thrown by the
+ # fail_unclean_shutdown_incompatible_commands.js override when it refuses to run commands that are
+ # inaccurate after an unclean shutdown. Above each tag is the message that causes the tag to be
+ # warranted.
+ ##
+ # "Cowardly fail if fastcount is run with a mongod that had an unclean shutdown: ..."
+ - requires_fastcount
+ # "Cowardly fail if dbStats is run with a mongod that had an unclean shutdown: ..."
+ - requires_dbstats
+ # "Cowardly fail if collStats is run with a mongod that had an unclean shutdown: ..."
+ - requires_collstats
+ # "Cowardly fail if unbounded dataSize is run with a mongod that had an unclean shutdown: ..."
+ - requires_datasize
+ ## The next tag corresponds to long running-operations, as they may exhaust their number
+ # of retries and result in a network error being thrown.
+ - operations_longer_than_stepdown_interval
+
+executor:
+ archive:
+ hooks:
+ - CheckReplDBHash
+ - CheckReplOplogs
+ - ValidateCollections
+ config:
+ shell_options:
+ eval: >-
+ testingReplication = true;
+ load('jstests/libs/override_methods/network_error_and_txn_override.js');
+ db = connect(TestData.connectionString);
+ load("jstests/libs/override_methods/enable_sessions.js");
+ load("jstests/libs/override_methods/set_read_and_write_concerns.js");
+ load("jstests/libs/override_methods/fail_unclean_shutdown_incompatible_commands.js");
+ load("jstests/libs/override_methods/fail_unclean_shutdown_start_parallel_shell.js");
+ global_vars:
+ TestData:
+ alwaysInjectTransactionNumber: true
+ defaultReadConcernLevel: "majority"
+ logRetryAttempts: true
+ networkErrorAndTxnOverrideConfig:
+ retryOnNetworkErrors: true
+ backgroundReconfigs: true
+ overrideRetryAttempts: 3
+ sessionOptions:
+ writeConcern:
+ w: "majority"
+ readConcern:
+ level: "majority"
+ # Force DBClientRS to find the primary for non-write commands.
+ readPreference:
+ mode: "primary"
+ retryWrites: true
+ # We specify nodb so the shell used by each test will attempt to connect after loading the
+ # retry logic in auto_retry_on_network_error.js.
+ nodb: ""
+ readMode: commands
+ hooks:
+ - class: DoReconfigInBackground
+ shell_options:
+ nodb: ""
+ - class: ContinuousStepdown
+ kill: true
+ background_reconfig: true
+ # The CheckReplDBHash hook waits until all operations have replicated to and have been applied
+ # on the secondaries, so we run the ValidateCollections hook after it to ensure we're
+ # validating the entire contents of the collection.
+ - class: CheckReplOplogs
+ - class: CheckReplDBHash
+ - class: ValidateCollections
+ - class: CleanEveryN
+ n: 20
+ fixture:
+ class: ReplicaSetFixture
+ mongod_options:
+ enableMajorityReadConcern: ''
+ set_parameters:
+ enableTestCommands: 1
+ logComponentVerbosity:
+ replication:
+ heartbeats: 2
+ all_nodes_electable: true
+ num_nodes: 5