Log templated command argv and enforce timeout kill

This commit is contained in:
Peter Steinberger
2025-11-24 16:09:13 +01:00
parent a5e2636e17
commit 17b4c5e7e7

View File

@@ -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;
} }
} }