summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVojislav Stojkovic <vojislav.stojkovic@mongodb.com>2022-05-05 05:41:22 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-05-31 17:04:38 +0000
commita8fd3bd540ae7c8b27689c34a3859d7aaacd4a1e (patch)
treeec2944fa463b0eb3815dc974150bdf8371e236df
parent46876f401256a3c074be156444de2893a1fcd64f (diff)
downloadmongo-a8fd3bd540ae7c8b27689c34a3859d7aaacd4a1e.tar.gz
SERVER-65131 Disable opportunistic read targeting
(cherry picked from commit e6547d5561be2e0fe51f5f7a317a094732f77c2c)
-rw-r--r--buildscripts/resmokeconfig/suites/sharding_opportunistic_secondary_targeting.yml16
-rw-r--r--etc/evergreen.yml4
-rw-r--r--etc/evergreen_yml_components/definitions.yml8
-rw-r--r--src/mongo/executor/network_interface_tl.cpp5
-rw-r--r--src/mongo/executor/network_interface_tl.idl9
5 files changed, 42 insertions, 0 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..25fd82af0f7
--- /dev/null
+++ b/buildscripts/resmokeconfig/suites/sharding_opportunistic_secondary_targeting.yml
@@ -0,0 +1,16 @@
+test_kind: js_test
+
+selector:
+ roots:
+ - jstests/sharding/**/*.js
+ exclude_files:
+ - jstests/sharding/**/libs/**/*.js
+
+executor:
+ config:
+ shell_options:
+ nodb: ''
+ global_vars:
+ TestData:
+ setParametersMongos:
+ opportunisticSecondaryTargeting: true
diff --git a/etc/evergreen.yml b/etc/evergreen.yml
index 530ca05d62f..e6944846aff 100644
--- a/etc/evergreen.yml
+++ b/etc/evergreen.yml
@@ -265,6 +265,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: server_discovery_and_monitoring_json_test_TG
distros:
@@ -878,6 +879,7 @@ buildvariants:
- windows-vsCurrent-large
- name: session_jscore_passthrough
- name: sharding_gen
+ - name: sharding_opportunistic_secondary_targeting_gen
- name: .stitch
- name: server_discovery_and_monitoring_json_test_TG
- name: server_selection_json_test_TG
@@ -952,6 +954,7 @@ buildvariants:
- name: sharding_auth_gen
- name: sharding_auth_audit_gen
- name: sharding_ese_gen
+ - name: sharding_opportunistic_secondary_targeting_gen
- name: snmp
- name: unittest_shell_hang_analyzer_gen
@@ -1448,6 +1451,7 @@ buildvariants:
- name: sharding_api_version_jscore_passthrough_gen
- name: .sharding .txns
- name: .sharding .common
+ - name: sharding_opportunistic_secondary_targeting_gen
- name: snmp
- name: .stitch
- name: .crypt
diff --git a/etc/evergreen_yml_components/definitions.yml b/etc/evergreen_yml_components/definitions.yml
index 434dac96a56..1ec9c3f2685 100644
--- a/etc/evergreen_yml_components/definitions.yml
+++ b/etc/evergreen_yml_components/definitions.yml
@@ -5710,6 +5710,14 @@ tasks:
vars:
use_large_distro: "true"
+- <<: *gen_task_template
+ name: sharding_opportunistic_secondary_targeting_gen
+ tags: ["sharding", "common"]
+ commands:
+ - func: "generate resmoke tasks"
+ vars:
+ use_large_distro: "true"
+
- <<: *task_template
name: snmp
tags: []
diff --git a/src/mongo/executor/network_interface_tl.cpp b/src/mongo/executor/network_interface_tl.cpp
index 555b3677de4..1b74e1e9ee5 100644
--- a/src/mongo/executor/network_interface_tl.cpp
+++ b/src/mongo/executor/network_interface_tl.cpp
@@ -540,6 +540,11 @@ Status NetworkInterfaceTL::startCommand(const TaskExecutor::CallbackHandle& cbHa
});
}
+ if ((request.target.size() > 1) && !request.hedgeOptions &&
+ !gOpportunisticSecondaryTargeting.load()) {
+ request.target.resize(1);
+ }
+
auto [cmdState, future] = CommandState::make(this, request, cbHandle);
if (cmdState->requestOnAny.timeout != cmdState->requestOnAny.kNoTimeout) {
cmdState->deadline = cmdState->stopwatch.start() + cmdState->requestOnAny.timeout;
diff --git a/src/mongo/executor/network_interface_tl.idl b/src/mongo/executor/network_interface_tl.idl
index b71850511f4..b6d7d2088ac 100644
--- a/src/mongo/executor/network_interface_tl.idl
+++ b/src/mongo/executor/network_interface_tl.idl
@@ -34,3 +34,12 @@ feature_flags:
description: Suppress network interface transport layer exceptions
cpp_varname: gSuppressNetworkInterfaceTransportLayerExceptions
default: false
+
+server_parameters:
+ 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