{"version":"2.1.248","anchor":"remote-control-workers-report-busy-state-so-upgrades-wait-fo","canonical_anchor":"remote-control-workers-report-busy-state-so-upgrades-wait-fo","heading":"Remote-control workers report busy state so upgrades wait for idle","tier":"notice","area":"Remote Control","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.248\/e\/remote-control-workers-report-busy-state-so-upgrades-wait-fo","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.248","markdown":"### Remote-control workers report busy state so upgrades wait for idle\n\nRemote-control upgrades now wait for a worker to go idle instead of cutting sessions off.\n\n**What**\n\nA worker process that handles remote-control sessions now tells its parent daemon whether it has active sessions, sending busy and idle transitions plus a repeating keepalive while work is in flight. The daemon uses this to defer restarting for an upgrade until the worker goes idle, rather than interrupting live sessions.\n\n**Details**\n\n- Deferral is gated on `tengu_daemon_upgrade_defer_busy`, which falls back to on when the server returns nothing.\n- The worker sends a message of type `rc_busy` carrying the current busy flag.\n- The same busy flag decides whether active sessions are persisted when the worker shuts down.\n- The worker does not decide to stop on its own: it waits for the parent to push a shutdown message whose cause is `upgrade`, `reload` or `yield`, and exposes that cause so the upgrade path can act on it.\n\n**Evidence**\n\n`rc_busy`, `process.send({ type: \"rc_busy\", busy: g })`\n\n- Flag `tengu_daemon_upgrade_defer_busy`: Not enough to say (read for one account on one subscription tier against v2.1.248; this account: no value returned, anonymous baseline: no value returned, compiled default: on)\n- Area: Remote Control\n- Tier: You'll notice\n- Useful: 4\/5\n- Signal: 3\/5"}