0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-11-24 00:17:37 +01:00
mongodb/jstests/sharding/fail_kill_sessions.js
Matt Broadstone 771dabd098 SERVER-81339 Convert ReplSetTest and ShardingTest to modules (#26332)
GitOrigin-RevId: 744aa110a53786b23c62ff53f87a1418b5991e8d
2024-08-20 22:00:49 +00:00

44 lines
1.6 KiB
JavaScript

/*
* Ensure that `killAllSessions` fails when killing sessions on
* either (a) one of the shards or (b) all of the shards
* fails, and verify the log output.
*/
import {ShardingTest} from "jstests/libs/shardingtest.js";
import {
setFailCommandOnShards,
unsetFailCommandOnEachShard,
} from "jstests/sharding/libs/sharded_transactions_helpers.js";
function runTest({st, numShards, closeConnection}) {
const hostArray =
Array.from({length: numShards}, (_, i) => st["rs" + i].getPrimary().host).sort();
const data = {
errorCode: ErrorCodes.CommandFailed,
failCommands: ["killAllSessionsByPattern"],
closeConnection: closeConnection
};
setFailCommandOnShards(st, "alwaysOn", data, numShards);
assert.commandFailed(st.s.adminCommand({"killAllSessions": []}));
const relevantLog = checkLog.getFilteredLogMessages(st.s, 8963000, {});
assert.eq(relevantLog.length, 1, relevantLog);
// Ensure that the `failedHosts` attribute of the log includes the
// host(s) that were programmed to fail a `killAllSessions` command.
assert.eq(relevantLog[0].attr.failedHosts.sort(), hostArray, relevantLog);
unsetFailCommandOnEachShard(st, numShards);
assert.commandWorked(st.s.adminCommand({clearLog: 'global'}));
}
const st = new ShardingTest({mongos: 1, rs: {nodes: 1}, shards: 2});
runTest({st: st, numShards: 1, closeConnection: false});
runTest({st: st, numShards: 1, closeConnection: true});
runTest({st: st, numShards: 2, closeConnection: false});
runTest({st: st, numShards: 2, closeConnection: true});
st.stop();