From 0715feffa14fc5a0bf8e376c1ee0864214e1c957 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Wed, 4 Feb 2026 02:33:08 +0300 Subject: [PATCH] Wait for finished read, not for process exit in lp_optimizer --- mon/lp_optimizer/lp_optimizer.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/mon/lp_optimizer/lp_optimizer.js b/mon/lp_optimizer/lp_optimizer.js index dbb0cf30..ab8fbc92 100644 --- a/mon/lp_optimizer/lp_optimizer.js +++ b/mon/lp_optimizer/lp_optimizer.js @@ -10,16 +10,19 @@ const NO_OSD = 'Z'; async function lp_solve(text) { const cp = child_process.spawn('lp_solve'); - let stdout = '', stderr = '', finish_cb; + let stdout = '', stderr = '', finish_cb, finished = 0; cp.stdout.on('data', buf => stdout += buf.toString()); cp.stderr.on('data', buf => stderr += buf.toString()); - cp.on('exit', () => finish_cb && finish_cb()); + cp.stdout.on('end', () => finish_cb()); + cp.stderr.on('end', () => finish_cb()); cp.stdin.write(text); cp.stdin.end(); - if (cp.exitCode == null) + await new Promise(ok => (finish_cb = () => { - await new Promise(ok => finish_cb = ok); - } + finished++; + if (finished == 2) + ok(); + })); if (!stdout.trim()) { return null;