
Errors do not propagate to the parent workflow after `Waiting for Webhook Call` node
快速结论:该报错发生在 n8n 父工作流调用子工作流时,子工作流包含 `Wait`(Webhook Call)节点且在 Webhook 调用后出错,导致父工作流中的 `Execute Sub-workflow` 节点错误地显示为成功并将输入传递到输出。优先排查 n8n 版本是否低于 2.27.0,该版本已合入修复。
问题场景
用户在 n8n(版本 2.20.7,Docker 自托管,多主多 worker 模式)中创建了两个工作流:父工作流使用 `When clicking Execute workflow` 节点调用子工作流(开启 Wait For Sub-Workflow Completion 选项);子工作流包含 `When Executed by Another Workflow` -> `Edit Fields`(设置 execution.resumeUrl)-> `Wait`(On Webhook Call)-> `Stop and Error` 节点序列。当用户手动访问 resumeUrl 触发子工作流继续执行后,子工作流中的 `Stop and Error` 节点抛出错误,但父工作流的 `Execute Sub-workflow` 节点仍被标记为成功,且将输入 JSON 原样传递到输出。
报错原文
Parent workflow just passes input to output of the subworkflow execution node
Parent workflow sees subworkflow execution node as passed
The `Execute Sub-workflow` node is marked as successful and passes the input json on to the output json
原因分析
问题出在子工作流中包含 `Wait`(Webhook Call)节点且执行流程在 Webhook 调用之后发生错误时,错误信息没有正确回传到父工作流。具体而言,父工作流在 `Wait For Sub-Workflow Completion` 模式下,仅监听了子工作流的完成事件,但未正确处理子工作流在 Webhook 唤醒后发生的执行失败状态,从而将 `Execute Sub-workflow` 节点错误地标记为成功。该问题在 n8n 社区 Issue #31180 中被报告,开发团队已确认并在内部追踪(GHC-8516)。
环境排查
- n8n 版本:确认当前版本是否为 2.20.7 或更低版本,问题在 2.27.0 的 beta 轨道中被修复。
- 执行模式:检查是否为 scaling(multi-main)模式或多 worker 实例部署。
- 数据库:使用 PostgreSQL。
- 平台:Docker 自托管。
- Node.js 版本:24.13.1。
- 节点序列:确认子工作流中确实包含 `Wait`(On Webhook Call)节点,且后续有 `Stop and Error` 或任何执行失败的节点。
解决步骤
- 升级 n8n 版本:将 n8n 升级到 2.27.0 或更高版本(优先 beta 轨道 2.27.0)。该修复已合入,将在 2.27.0 beta 版本中发布,稳定版将于下一周发布。
- 验证父工作流配置:检查父工作流中 `Call Sub-workflow` 节点是否已开启 `Wait For Sub-Workflow Completion` 选项。
- 检查子工作流错误处理:确认子工作流在 `Wait` 节点之后的错误节点(如 `Stop and Error`)是否正确配置,确保错误状态被触发。
- 临时绕过方案(如果无法立即升级):可尝试在父工作流中手动检查子工作流的执行结果或添加错误捕获逻辑,但注意这不是官方推荐的解决方案。
验证方法
升级后重复触发场景:创建一个包含 `Wait` 节点和 `Stop and Error` 的子工作流,父工作流调用并等待完成。手动访问 resumeUrl 后,观察父工作流的 `Execute Sub-workflow` 节点是否显示为失败状态,且错误信息是否正确传递到父工作流执行记录中。



