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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user