Fix web-search smoke cleanup
This commit is contained in:
@@ -17,13 +17,29 @@ let nextId = 1;
|
|||||||
const pending = new Map();
|
const pending = new Map();
|
||||||
let stdoutBuffer = "";
|
let stdoutBuffer = "";
|
||||||
let stderrBuffer = "";
|
let stderrBuffer = "";
|
||||||
|
let childExited = false;
|
||||||
|
|
||||||
|
child.once("exit", () => {
|
||||||
|
childExited = true;
|
||||||
|
});
|
||||||
|
|
||||||
function stopChild() {
|
function stopChild() {
|
||||||
child.stdin.end();
|
|
||||||
child.kill("SIGTERM");
|
|
||||||
const killTimer = setTimeout(() => child.kill("SIGKILL"), 3000);
|
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
|
if (childExited) {
|
||||||
|
resolve();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
child.stdin.end();
|
||||||
|
const termTimer = setTimeout(() => {
|
||||||
|
if (!childExited) child.kill("SIGTERM");
|
||||||
|
}, 3000);
|
||||||
|
const killTimer = setTimeout(() => {
|
||||||
|
if (!childExited) child.kill("SIGKILL");
|
||||||
|
}, 6000);
|
||||||
|
|
||||||
child.once("exit", () => {
|
child.once("exit", () => {
|
||||||
|
clearTimeout(termTimer);
|
||||||
clearTimeout(killTimer);
|
clearTimeout(killTimer);
|
||||||
resolve();
|
resolve();
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user