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