const st = new ShardingTest({
|
mongos: [{
|
setParameter: {
|
logComponentVerbosity: tojson({network: {verbosity: 2}, executor: {verbosity:2}}),
|
// Force the mongos's replica set monitors to always include all the eligible nodes.
|
"failpoint.scanningServerSelectorIgnoreLatencyWindow": tojson({mode: "alwaysOn"}),
|
"failpoint.sdamServerSelectorIgnoreLatencyWindow": tojson({mode: "alwaysOn"}),
|
// Force the mongos to send requests to hosts in alphabetical order of host names.
|
"failpoint.networkInterfaceSendRequestsToTargetHostsInAlphabeticalOrder":
|
tojson({mode: "alwaysOn"})
|
}
|
}],
|
shards: 1,
|
rs: {nodes: 2, setParameter: {logComponentVerbosity: tojson({command: {verbosity: 2}})}}
|
});
|
const dbName = "hedged_reads";
|
const collName = "test";
|
const ns = dbName + "." + collName;
|
const testDB = st.s.getDB(dbName);
|
|
const numDocs = 10;
|
|
assert.commandWorked(st.s.adminCommand({enableSharding: dbName}));
|
st.ensurePrimaryShard(dbName, st.shard0.shardName);
|
|
let bulk = testDB[collName].initializeUnorderedBulkOp();
|
for (let i = 0; i < numDocs; i++) {
|
bulk.insert({x: i});
|
}
|
assert.commandWorked(bulk.execute());
|
|
assert.commandWorked(st.s.adminCommand({setParameter: 1, maxTimeMSForHedgedReads: 1000}));
|
jsTest.log(
|
"Start test");
|
assert.commandWorked(testDB.runCommand({
|
count: collName,
|
query: {$where: "sleep(100); return true;", x: {$gte: 0}},
|
$readPreference: {mode: "nearest"}
|
}));
|
st.stop();
|
}());
|