Admission gate for a rename: RenameGate in flow/rename.py, installed by main.AdmissionGate inside CORS, turns mutating API requests away with 503 renaming and Retry-After while closed and drains those admitted without a limit, abortable; affected flows' hooks get 503 or socket close 1013, reads, sign-in, assistant, workers, artifacts and rename routes pass; the run cache misses while the gate is closed; trigger_node lets EngineHeld through instead of reporting a node failure

This commit is contained in:
2026-11-02 20:53:08 +01:00
parent cb709c19ac
commit 81bd7c2724
7 changed files with 404 additions and 2 deletions
+6
View File
@@ -65,6 +65,7 @@ from fluksio.flow.nodes import (
WrenNode,
)
from fluksio.flow.pipeline import (
EngineHeld,
NodeOutcome,
Pipeline,
RunCacheLookup,
@@ -1984,6 +1985,9 @@ class FlowController:
Returns what the node raised, or an empty string. A node failing by hand
is reported the way a queued run reports it — on the canvas and in the
metrics — rather than as a stack trace in the server log.
:raises EngineHeld: While a rename holds the engine, which is no
failure of the node's.
"""
node = self.get_node(node_id)
if node is None:
@@ -1993,6 +1997,8 @@ class FlowController:
node.trigger(values, durable=False)
else:
node.inject(values or {}, durable=False)
except EngineHeld:
raise
except Exception as exc:
if self.pipeline is None:
raise