Log templated command argv and enforce timeout kill
This commit is contained in:
16
src/index.ts
16
src/index.ts
@@ -397,11 +397,13 @@ async function getReplyFromConfig(
|
|||||||
const finalArgv = templatePrefix
|
const finalArgv = templatePrefix
|
||||||
? [argv[0], templatePrefix, ...argv.slice(1)]
|
? [argv[0], templatePrefix, ...argv.slice(1)]
|
||||||
: argv;
|
: argv;
|
||||||
|
logVerbose(`Resolved command argv: ${finalArgv.join(" ")}`);
|
||||||
const started = Date.now();
|
const started = Date.now();
|
||||||
try {
|
try {
|
||||||
const { stdout } = await execFileAsync(finalArgv[0], finalArgv.slice(1), {
|
const { stdout } = await execFileAsync(finalArgv[0], finalArgv.slice(1), {
|
||||||
maxBuffer: 1024 * 1024,
|
maxBuffer: 1024 * 1024,
|
||||||
timeout: timeoutMs,
|
timeout: timeoutMs,
|
||||||
|
killSignal: "SIGKILL",
|
||||||
});
|
});
|
||||||
const trimmed = stdout.trim();
|
const trimmed = stdout.trim();
|
||||||
logVerbose(
|
logVerbose(
|
||||||
@@ -410,10 +412,16 @@ async function getReplyFromConfig(
|
|||||||
logVerbose(`Command auto-reply finished in ${Date.now() - started}ms`);
|
logVerbose(`Command auto-reply finished in ${Date.now() - started}ms`);
|
||||||
return trimmed || undefined;
|
return trimmed || undefined;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(
|
const elapsed = Date.now() - started;
|
||||||
`Command auto-reply failed after ${Date.now() - started}ms`,
|
const anyErr = err as { killed?: boolean; signal?: string };
|
||||||
err,
|
const timeoutHit = anyErr.killed === true || anyErr.signal === "SIGKILL";
|
||||||
);
|
if (timeoutHit) {
|
||||||
|
console.error(
|
||||||
|
`Command auto-reply timed out after ${elapsed}ms (limit ${timeoutMs}ms)`,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
console.error(`Command auto-reply failed after ${elapsed}ms`, err);
|
||||||
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user