Stopping a live flow ends the calls it has running, on workers and in the local pool, and deleting one now ends its local calls too; what a call returns after its flow was stopped or deleted is dropped by a per-flow count the node compares, so a flow started again never takes an old call's answer. A live remote call's id carries a suffix, so two calls of one node no longer share it, and a call is registered before it queues for a slot, so ending its flow or run reaches it and it is never sent; a run's cancel goes through the call's own thread as well

This commit is contained in:
2026-11-11 12:03:43 +01:00
parent cd8831cfd3
commit 7132d26f36
8 changed files with 195 additions and 75 deletions
+4 -4
View File
@@ -96,10 +96,10 @@ Source code travels with each call and compiles on the worker, so remote-only
dependencies do not need to be installed on the engine. Calls to `emit`,
`save_artifact` and `load_artifact` work there too.
Cancelling a run stops its active node processes. Deleting a flow does the same
for the calls it has out, and drops an answer that still comes back. A
disconnected worker fails in-flight calls. While executing, the agent sends
heartbeats every ten seconds; 90 seconds without contact fails the call.
Cancelling a run stops its active node processes. Stopping or deleting a flow
does the same for the calls it has out, and drops an answer that still comes
back. A disconnected worker fails in-flight calls. While executing, the agent
sends heartbeats every ten seconds; 90 seconds without contact fails the call.
Heartbeats do not reset the node's own silence timeout.
Every call runs in a process group of its own. The agent kills the group when
+5 -4
View File
@@ -167,10 +167,11 @@ Build issues prevent the affected flow from running. `node_unhealthy` and
`node_degraded` are runtime issues: other work continues, and they clear when
the node recovers. A degraded node is a warning on Home rather than a fault.
You can **stop** a live flow to remove its subscriptions and schedules, or
**pause** it to hold pending work while values still arrive. **Step** releases
one held item. Repeated background crashes can quarantine a flow; publishing
a change gives it another chance.
You can **stop** a live flow to remove its subscriptions and schedules and end
the node calls it has running, or **pause** it to hold pending work while
values still arrive. What a stopped call still returns is dropped. **Step**
releases one held item. Repeated background crashes can quarantine a flow;
publishing a change gives it another chance.
## Where to next