summaryrefslogtreecommitdiff
path: root/buildscripts/resmokeconfig/suites/replica_sets_terminate_primary_jscore_passthrough.yml
blob: 870e55db89e773d33dc040878b17dba31ae359fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
test_kind: js_test

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/capped_update.js
  - jstests/core/dbadmin.js
  - jstests/core/opcounters_write_cmd.js
  - jstests/core/read_after_optime.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_server6865.js

  # Stepdown commands during fsync lock will fail.
  - jstests/core/currentop.js
  - jstests/core/fsync.js
  - jstests/core/killop_drop_collection.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

  # Expect results to return in a certain order, secondaries may apply ops out of order.
  - jstests/core/coveredIndex1.js
  - jstests/core/sortc.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

  - 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/explain_large_bounds.js # Stepdown can timeout waiting for global lock.
  - jstests/core/insert2.js # Creates new mongo connection.
  - jstests/core/list_collections_filter.js # Temporary collections are dropped on failover.
  - jstests/core/startup_log.js # Checks pid, which is different on each server.
  - jstests/core/validate_cmd_ns.js # Calls _exec() directly, not retryable.

  # Creates new mongo connection but won't retry connecting.
  - jstests/core/shell_connection_strings.js

  # Starts a parallel shell but won't restart it after shutdown.
  # TODO SERVER-33229: Remove these exclusions
  - jstests/core/compact_keeps_indexes.js
  - jstests/core/crud_ops_do_not_throw_locktimeout.js
  - jstests/core/find_and_modify_concurrent_update.js
  - jstests/core/shellstartparallel.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 three 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 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
  # Retrying a query can change whether a plan cache entry is active.
  - inspects_whether_plan_cache_entry_is_active

executor:
  archive:
    hooks:
      - CheckReplDBHash
      - CheckReplOplogs
      - ValidateCollections
  config:
    shell_options:
      # TODO SERVER-33229: Remove override of startParallelShell
      eval: >-
        testingReplication = true;
        load("jstests/libs/override_methods/causally_consistent_index_builds.js");
        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_start_parallel_shell.js");
      global_vars:
        TestData:
          alwaysInjectTransactionNumber: true
          defaultReadConcernLevel: "majority"
          logRetryAttempts: true
          networkErrorAndTxnOverrideConfig:
            retryOnNetworkErrors: true
          overrideRetryAttempts: 3
          sessionOptions:
            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: ContinuousStepdown
    terminate: 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
    shell_options:
      global_vars:
        TestData:
          checkCollectionCounts: true
  - class: CleanEveryN
    n: 20
  fixture:
    class: ReplicaSetFixture
    mongod_options:
      enableMajorityReadConcern: ''
      syncdelay: 5
      set_parameters:
        enableTestCommands: 1
        enableElectionHandoff: 0
        logComponentVerbosity:
          replication:
            heartbeats: 2
            rollback: 2
          storage:
            recovery: 2
    all_nodes_electable: true
    num_nodes: 3
    replset_config_options:
      settings:
        catchUpTimeoutMillis: 0