Deleting a live flow ends the calls it has out on workers and drops what a removed node still returns, so a node that never returns gives its slot and process back and a late answer no longer recreates the flow's values; a cancel goes through the call's own inbox and is sent after the call's frame, so a service stopped right after starting no longer cancels before its serve

This commit is contained in:
2026-11-11 09:40:59 +01:00
parent 138c632576
commit a3d532f3a5
8 changed files with 187 additions and 12 deletions
+4
View File
@@ -862,6 +862,10 @@ class FlowController:
if built is None:
if name:
pipeline.remove_flow(name)
# A call still out on a worker would keep its slot and its
# process there, for a result that is now dropped.
if self.remote is not None:
self.remote.cancel_flow(name)
self.loaded = {
node_id: entry
for node_id, entry in self.loaded.items()