A newer version of the Gradio SDK is available: 6.22.0
metadata
title: Workflow Error Propagation
emoji: 🌖
colorFrom: gray
colorTo: purple
sdk: gradio
sdk_version: 6.20.0
python_version: '3.13'
app_file: app.py
pinned: false
Repro: downstream workflow nodes still run after an upstream node fails
Minimal reproduction for a gr.Workflow bug: when an upstream node raises an exception, downstream nodes are not skipped. They execute with None for the input that the failed node was supposed to produce.
Steps
- Open the app and click Run on the canvas.
- The
firstnode fails as expected (it always raisesValueError("boom")). - The
secondnode, whose only input comes fromfirst, still runs: its node showsgot: None, and the server log printssecond() called with None.
Expected: second should not run its body. It should be marked as failed with the existing "upstream node failed" message, like other node types.
Why it happens
The executor's fail-fast guard in workflow-executor.ts checks port.required && inputs[port.id] === null, but the fn-node ports generated from bind= never set required, so the guard is skipped and null flows into the function call. See the linked issue for details.