Timers 1.7.1: a failed LTC capture spawn retries instead of parking
When spawn() itself fails — EACCES on a helper that lost its execute bit, as the 1.10.2 catalog install did on AB on 2026-10-04 — the child emits 'error' with no 'exit' to follow. The handler reported the error but left `child` set and scheduled nothing: the 250 ms eval loop then kept reporting a misleading "No signal" over the dead child object, and the listener was parked until a remount. Null the child in the error handler and retry on the slow timer, the way spl-listener already does (which is why SPL healed itself the moment its binary was chmod +x'd, while Timers needed a remount). The error report stays visible: the eval loop does not report while there is no child. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
c9e03398a6
commit
c4383c9e62
@@ -162,7 +162,14 @@ function createLtcListener({ device, channel, moduleDir, log, onUpdate }) {
|
||||
});
|
||||
|
||||
child.on('error', (err) => {
|
||||
// A spawn that fails (EACCES on a helper that lost its execute bit,
|
||||
// ENOENT) emits 'error' with no 'exit' to follow. Leaving `child` set
|
||||
// would let the eval loop report "No signal" over a dead child forever
|
||||
// and nothing would ever retry — what parked LTC on AB on 2026-10-04.
|
||||
// Null it and retry on the slow timer, the way spl-listener does.
|
||||
report({ error: TOOL_MISSING, detail: `LTC capture failed to start: ${err.message}` });
|
||||
child = null;
|
||||
scheduleRestart(BAD_CONFIG_RETRY_MS);
|
||||
});
|
||||
|
||||
child.on('exit', (code) => {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "propresenter-timers",
|
||||
"name": "Timers",
|
||||
"version": "1.7.0",
|
||||
"version": "1.7.1",
|
||||
"proddash": ">=1.4.0",
|
||||
"description": "Timers, Clocks, and LTC From configured Modules",
|
||||
"provides": [
|
||||
|
||||
Reference in New Issue
Block a user