mirror of https://github.com/mongodb/mongo
38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
/**
|
|
* Utilities for testing when sessions are killed.
|
|
*/
|
|
export var KilledSessionUtil = (function () {
|
|
// Returns if the code is one that could come from a session being killed.
|
|
function isKilledSessionCode(code) {
|
|
return (
|
|
code === ErrorCodes.Interrupted ||
|
|
code === ErrorCodes.CursorKilled ||
|
|
code === ErrorCodes.CursorNotFound ||
|
|
code === ErrorCodes.QueryPlanKilled
|
|
);
|
|
}
|
|
|
|
function hasKilledSessionError(errOrRes) {
|
|
let hasOriginalErrorKilledSessionCode =
|
|
errOrRes.code == ErrorCodes.TransactionParticipantFailedUnyield
|
|
? isKilledSessionCode(errOrRes.originalError.code)
|
|
: false;
|
|
return (
|
|
hasOriginalErrorKilledSessionCode ||
|
|
isKilledSessionCode(errOrRes.code) ||
|
|
(Array.isArray(errOrRes.writeErrors) &&
|
|
errOrRes.writeErrors.every((writeError) => isKilledSessionCode(writeError.code)))
|
|
);
|
|
}
|
|
|
|
function hasKilledSessionWCError(res) {
|
|
return res.writeConcernError && isKilledSessionCode(res.writeConcernError.code);
|
|
}
|
|
|
|
return {
|
|
isKilledSessionCode,
|
|
hasKilledSessionError,
|
|
hasKilledSessionWCError,
|
|
};
|
|
})();
|