diff options
author | Amirsaman Memaripour <amirsaman.memaripour@mongodb.com> | 2021-02-18 17:32:34 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-02-24 21:33:06 +0000 |
commit | 030c2936957607671ba3309718ef194bb3ad5f5d (patch) | |
tree | 10fde9c747ea1d7e4b19dcbbf64501b6f39c8484 | |
parent | 91bdf11ca88df82ef67cc666f3181b864ad99ec1 (diff) | |
download | mongo-030c2936957607671ba3309718ef194bb3ad5f5d.tar.gz |
SERVER-54278 Add feature flag to disable Opportunistic Reads by default
-rw-r--r-- | buildscripts/resmokeconfig/suites/sharding_opportunistic_secondary_targeting.yml | 15 | ||||
-rw-r--r-- | etc/evergreen.yml | 42 | ||||
-rw-r--r-- | src/mongo/executor/SConscript | 2 | ||||
-rw-r--r-- | src/mongo/executor/executor_parameters.idl (renamed from src/mongo/executor/task_executor_pool_parameters.idl) | 9 | ||||
-rw-r--r-- | src/mongo/executor/network_interface_tl.cpp | 7 | ||||
-rw-r--r-- | src/mongo/executor/task_executor_pool.cpp | 2 |
6 files changed, 75 insertions, 2 deletions
diff --git a/buildscripts/resmokeconfig/suites/sharding_opportunistic_secondary_targeting.yml b/buildscripts/resmokeconfig/suites/sharding_opportunistic_secondary_targeting.yml new file mode 100644 index 00000000000..df51dad2dc0 --- /dev/null +++ b/buildscripts/resmokeconfig/suites/sharding_opportunistic_secondary_targeting.yml @@ -0,0 +1,15 @@ +test_kind: js_test + +selector: + roots: + - jstests/sharding/*.js + +executor: + config: + shell_options: + nodb: '' + readMode: commands + global_vars: + TestData: + setParametersMongos: + opportunisticSecondaryTargeting: true diff --git a/etc/evergreen.yml b/etc/evergreen.yml index eef959c35fe..6ca4e037eee 100644 --- a/etc/evergreen.yml +++ b/etc/evergreen.yml @@ -4688,6 +4688,15 @@ tasks: resmoke_args: --storageEngine=wiredTiger fallback_num_sub_suites: 4 +- name: sharding_opportunistic_secondary_targeting_gen + tags: ["sharding", "common"] + commands: + - func: "generate resmoke tasks" + vars: + use_large_distro: "true" + resmoke_args: --storageEngine=wiredTiger + fallback_num_sub_suites: 32 + - <<: *task_template name: change_streams tags: ["change_streams"] @@ -7434,6 +7443,7 @@ buildvariants: - name: sharded_multi_stmt_txn_jscore_passthrough - name: .sharding .jscore !.wo_snapshot - name: sharding_gen + - name: sharding_opportunistic_secondary_targeting_gen - name: .stitch - name: linux-64-duroff @@ -8344,6 +8354,7 @@ buildvariants: - windows-64-vs2017-compile - name: session_jscore_passthrough - name: sharding_gen + - name: sharding_opportunistic_secondary_targeting_gen - name: .stitch - name: enterprise-windows-64-2k8 @@ -8395,6 +8406,7 @@ buildvariants: - name: sharding_auth_gen - name: sharding_auth_audit_gen - name: sharding_ese_gen + - name: sharding_opportunistic_secondary_targeting_gen - name: snmp - name: push distros: @@ -8857,6 +8869,7 @@ buildvariants: - name: sharded_multi_stmt_txn_jscore_passthrough distros: - rhel62-large + - name: sharding_opportunistic_secondary_targeting_gen - name: snmp - name: .stitch - name: .updatefuzzer @@ -10624,6 +10637,35 @@ buildvariants: - name: .stitch - name: .updatefuzzer +- name: enterprise-ubuntu-sharding-opportunistic-secondary-targeting-1804-64-bit + display_name: "~ Enterprise Ubuntu 18.04 (with {opportunisticSecondaryTargeting: true})" + batchtime: 1440 # 1 day + run_on: + - ubuntu1804-test + modules: + - enterprise + expansions: + scons_cache_scope: shared + compile_flags: MONGO_DISTMOD=ubuntu1804 -j$(grep -c ^processor /proc/cpuinfo) --variables-files=etc/scons/mongodbtoolchain_v3_gcc.vars + multiversion_platform: ubuntu1804 + multiversion_edition: enterprise + test_flags: >- + --mongosSetParameters="opportunisticSecondaryTargeting: true" + large_distro_name: ubuntu1804-build + tasks: + - name: compile_all_run_unittests_TG + distros: + - ubuntu1804-build + - name: .aggregation !.no_async + - name: .sharding .auth + - name: .sharding .causally_consistent !.wo_snapshot + - name: .concurrency .common !.kill_terminate + - name: .integration !.audit + - name: .jscore .common + - name: .logical_session_cache .one_sec + - name: .sharding .jscore !.wo_snapshot !.multi_stmt + - name: .sharding .common !.csrs + - name: ubuntu1804-asan display_name: ~ ASAN SSL Ubuntu 18.04 run_on: diff --git a/src/mongo/executor/SConscript b/src/mongo/executor/SConscript index 7c015cb39f3..ae3803a1f03 100644 --- a/src/mongo/executor/SConscript +++ b/src/mongo/executor/SConscript @@ -45,6 +45,7 @@ env.Library(target='async_multicaster', env.Library(target='task_executor_interface', source=[ 'task_executor.cpp', + env.Idlc("executor_parameters.idl")[0], ], LIBDEPS=[ '$BUILD_DIR/mongo/base', @@ -261,7 +262,6 @@ env.Library( target='task_executor_pool', source=[ 'task_executor_pool.cpp', - env.Idlc("task_executor_pool_parameters.idl")[0], ], LIBDEPS=[ '$BUILD_DIR/mongo/idl/server_parameter', diff --git a/src/mongo/executor/task_executor_pool_parameters.idl b/src/mongo/executor/executor_parameters.idl index 8eba1da54c9..63d1b82231d 100644 --- a/src/mongo/executor/task_executor_pool_parameters.idl +++ b/src/mongo/executor/executor_parameters.idl @@ -38,3 +38,12 @@ server_parameters: cpp_vartype: "AtomicWord<int>" cpp_varname: "taskExecutorPoolSize" default: 1 + + opportunisticSecondaryTargeting: + description: >- + Allows attempting to establish connections to multiple secondaries and directing the request + to the first secondary that accepts the connection. + set_at: [ startup, runtime ] + cpp_vartype: 'AtomicWord<bool>' + cpp_varname: 'gOpportunisticSecondaryTargeting' + default: false diff --git a/src/mongo/executor/network_interface_tl.cpp b/src/mongo/executor/network_interface_tl.cpp index e8cd15f3e60..93abd40fce3 100644 --- a/src/mongo/executor/network_interface_tl.cpp +++ b/src/mongo/executor/network_interface_tl.cpp @@ -36,6 +36,7 @@ #include "mongo/db/commands/test_commands_enabled.h" #include "mongo/db/server_options.h" #include "mongo/executor/connection_pool_tl.h" +#include "mongo/executor/executor_parameters_gen.h" #include "mongo/transport/transport_layer_manager.h" #include "mongo/util/concurrency/idle_thread_block.h" #include "mongo/util/log.h" @@ -271,6 +272,12 @@ Status NetworkInterfaceTL::startCommand(const TaskExecutor::CallbackHandle& cbHa request.metadata = newMetadata.obj(); } + // If "Opportunistic Secondary Targeting" is disabled, then we target only the first host of the + // set we are given. + if (request.target.size() > 1 && !gOpportunisticSecondaryTargeting.loadRelaxed()) { + request.target.resize(1); + } + auto pf = makePromiseFuture<RemoteCommandOnAnyResponse>(); auto cmdState = CommandState::make(this, request, cbHandle, std::move(pf.promise)); diff --git a/src/mongo/executor/task_executor_pool.cpp b/src/mongo/executor/task_executor_pool.cpp index 2f7bd5d95d8..a56f94580ca 100644 --- a/src/mongo/executor/task_executor_pool.cpp +++ b/src/mongo/executor/task_executor_pool.cpp @@ -34,8 +34,8 @@ #include <algorithm> #include "mongo/executor/connection_pool_stats.h" +#include "mongo/executor/executor_parameters_gen.h" #include "mongo/executor/task_executor.h" -#include "mongo/executor/task_executor_pool_parameters_gen.h" #include "mongo/util/processinfo.h" namespace mongo { |