summaryrefslogtreecommitdiff
path: root/buildscripts/resmokeconfig/suites/concurrency_simultaneous_replication.yml
blob: ce4cead3db53ad8902591b5240c22d0594469449 (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
test_kind: parallel_fsm_workload_test

selector:
  roots:
  - jstests/concurrency/fsm_workloads/**/*.js
  exclude_files:
  # These workloads implicitly assume that their tid ranges are [0, $config.threadCount). This
  # isn't guaranteed to be true when they are run in parallel with other workloads.
  - jstests/concurrency/fsm_workloads/findAndModify_inc_pipeline.js
  - jstests/concurrency/fsm_workloads/list_indexes.js
  - jstests/concurrency/fsm_workloads/update_inc_capped.js
  - jstests/concurrency/fsm_workloads/update_inc_pipeline.js

  # These workloads uses >100MB of data, which can overwhelm test hosts.
  - jstests/concurrency/fsm_workloads/agg_group_external.js
  - jstests/concurrency/fsm_workloads/agg_sort_external.js
  # The findAndModify_update_grow.js workload can cause OOM kills on test hosts.
  - jstests/concurrency/fsm_workloads/findAndModify_update_grow.js

  # convertToCapped requires a global lock and any background operations on the database causes it
  # to fail due to not finishing quickly enough.
  - jstests/concurrency/fsm_workloads/convert_to_capped_collection.js
  - jstests/concurrency/fsm_workloads/convert_to_capped_collection_index.js

  # This workload kills random cursors which takes a collection lock.
  # TODO: SERVER-35567.
  - jstests/concurrency/fsm_workloads/snapshot_read_kill_operations.js

  # This workload kills random sessions and a different FSM workload wouldn't be able to handle
  # the error response from the op being killed.
  - jstests/concurrency/fsm_workloads/multi_statement_transaction_kill_sessions_atomicity_isolation.js
  - jstests/concurrency/fsm_workloads/multi_statement_transaction_simple_kill_sessions.js

  # This workload may restart running transactions on a different client, causing deadlock if
  # there is a concurrent dropDatabase waiting for the global X lock.
  # TODO: SERVER-37876
  - jstests/concurrency/fsm_workloads/multi_statement_transaction_all_commands_same_session.js

  # This workload assumes no locks are taken outside of the workload.
  - jstests/concurrency/fsm_workloads/access_collection_in_transaction_after_catalog_changes.js

  # SERVER-43053 These workloads set a failpoint that causes intermittent WriteConflict errors,
  # which presently can cause other simultaneous workloads to fail.
  - jstests/concurrency/fsm_workloads/collmod_writeconflict.js
  - jstests/concurrency/fsm_workloads/reindex_writeconflict.js

  # This test is not compatible with the other mapReduce FSM tests since it requires the
  # 'internalQueryUseAggMapReduce' knob to be false while the other tests explicitly set it to true.
  - jstests/concurrency/fsm_workloads/map_reduce_reduce.js

  exclude_with_any_tags:
  - requires_sharding

  group_size: 10
  group_count_multiplier: 1.0

executor:
  archive:
    hooks:
      - CheckReplDBHashInBackground
      - CheckReplDBHash
      - ValidateCollections
    tests: true
  config:
    shell_options:
      readMode: commands
      global_vars:
        TestData:
          skipDropDatabaseOnDatabaseDropPending: true
      setShellParameter: skipShellCursorFinalize=true
  hooks:
  # 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.
  #
  # TODO SERVER-26466: Add CheckReplOplogs hook to the concurrency suite.
  - class: CheckReplDBHashInBackground
  - class: CheckReplDBHash
  - class: ValidateCollections
  - class: CleanupConcurrencyWorkloads
  fixture:
    class: ReplicaSetFixture
    mongod_options:
      oplogSize: 1024
      set_parameters:
        # Increase the timeout of the cursor so that the cursor will continue to stay alive even
        # when there is a delay in lock acquisition during a getMore command.
        cursorTimeoutMillis: 3600000
        enableTestCommands: 1
        # We have historically had deadlocks occur due to lock acquisition issues involving the
        # system running out of WiredTiger write tickets. We intentionally lower the number of
        # WiredTiger write tickets available to below the maximum number of database clients to
        # trigger this situation at least some of the time.
        wiredTigerConcurrentWriteTransactions: 64
    num_nodes: 3