Fixed
-
Node-RED could be killed by a failed ReGaHSS write, seconds after
start (RedMatic #601).
A write to a system variable that arrives before the variable list is
known is deferred into a queue and flushed once the first
getRegaVariablescompletes. That flush dropped the resulting promise,
so a rejected write — ReGaHSS closing the connection,Error: socket hang up— became an unhandled rejection, which Node >= 15 turns
into an uncaught exception: the whole Node-RED process exited with
status 1 and its supervisor restarted it into the same crash. The
rejection is now caught and logged.This became reachable in 4.3.0: the rewritten local-CCU detection made
isLocaltrue again on RedMatic boxes (it had silently stopped
matching on current firmware), which moves ReGa traffic from lighttpd
on 8181 to ReGaHSS directly on 8183. lighttpd absorbed a busy ReGaHSS;
the direct port simply closes the connection. -
The same floating-promise pattern in
ccu-mqtt:setVariable,
programActiveandprogramExecutetriggered over MQTT dropped their
promises too, and now report through the node's error output instead of
taking the process down. -
regaPoll'sfinallychain is caught as well, so a throw in the
follow-up scheduling cannot escape as an unhandled rejection.