A Slow Task Runner Is Not a Dead Task Runner
One line in the n8n 2.35.5 release notes carries a useful lesson for every workflow and agent runtime: task runners should not be restarted merely because they are slow. The distinction sounds obvious, but many recovery loops collapse duration and liveness into the same signal. A job crosses a time threshold, the supervisor assumes it is dead, and the worker is restarted. If the original worker was still making progress, that recovery can duplicate a tool call, discard partial state, or create a retry storm. Duration is one signal, not the verdict A robust liveness decision should combine several observations: - Is the worker still emitting a heartbeat? - Has an explicit progress marker changed? - Does the current step have a documented upper bound? - Is the worker waiting on an external dependency that is still alive? - Has the same no-progress condition repeated across checks? Timeouts still matter. The problem is using one generic timeout as proof of death for every task. A local computation, an external API call, and a human-in-the-loop approval step have different expected durations and different safe recovery actions. Recovery must account for side effects Before restarting, the runtime should know whether the current step is idempotent. A read can usually be retried safely. Sending a message, charging a payment method, creating a ticket, or mutating a remote system may not be safe to repeat without an idempotency key or an independent readback. For long-running agent work, I would separate three states: - Alive and progressing: continue. - Alive but stalled: diagnose the dependency or request a bounded intervention. - No reliable liveness evidence: stop new side effects, inspect the external system, then decide whether to retry. The same n8n release also says the expression engine is initialized only when needed and test webhooks are released after teardown. Those are separate changes, but the operational theme is consistent: do not create work or retain state without a reason. Primary source: https://github.com/n8n-io/n8n/releases/tag/n8n%402.35.5 Disclosure: I used AI assistance to organize and edit this article, then verified the release claims against the linked primary source. Top comments (0)
Comments
No comments yet. Start the discussion.