创建同类型父子工作流触发信号报错WorkflowNotFoundError排查
问题描述
需要开发树形结构工作流:父工作流可包含任意数量子工作流,子工作流也可嵌套子工作流,且父子工作流类型完全一致。目前在父工作流中通过信号创建同类型子工作流时出现异常,但创建不同类型子工作流时无任何问题。
实现代码如下:
export async function jobFileWorkflow( jobRefId: string, ): Promise<JobFileStatus> { // 此处省略部分代码 setHandler(signals.startChildJobFileWorkflow, async (jobRefId: string) => { const jobFIleChildWorkflowId = `wf-job-file-${jobRefId}`; executeChild<typeof jobFileWorkflow>(jobFileWorkflow, { args: [jobRefId], taskQueue: 'job-file-1', workflowId: jobFIleChildWorkflowId, }) .then((i) => { console.log(' some log'); }) .catch((err) => { console.log('Error processing child wf: ', err); }); }); }
触发信号时收到错误:
WorkflowNotFoundError: current workflow not found
问题原因与排查思路
可能原因
- 工作流注册不匹配:同类型子工作流的定义未正确注册到工作流服务(如Temporal),或者注册的工作流名称与调用时使用的名称不一致。
executeChild通过工作流函数调用时,底层依赖函数名作为工作流类型标识,若注册时使用了别名或名称不符,会导致服务找不到对应的工作流定义。 - 任务队列无对应监听:子工作流指定的
job-file-1任务队列上,没有运行中的Worker注册了jobFileWorkflow工作流。工作流服务无法在指定队列找到能处理该类型工作流的Worker,就会抛出找不到工作流的错误。 - 信号处理上下文丢失:信号处理函数中使用
then/catch方式调用executeChild,可能导致工作流上下文脱离。工作流API(如executeChild)需要在工作流的执行上下文中运行,异步回调可能会破坏这个上下文。 - 工作流ID重复(低概率):若
jobRefId存在重复,生成的子工作流ID会重复,但这个情况通常会抛出ID冲突错误,而非找不到工作流,可作为次要排查点。
排查步骤
- 检查工作流注册:确认Worker代码中已正确注册
jobFileWorkflow,且注册名称与函数名一致。例如在Temporal中,registerWorkflow(jobFileWorkflow)需确保没有自定义别名,或别名与调用时的标识匹配。 - 验证任务队列监听:确认处理
job-file-1任务队列的Worker,确实注册了jobFileWorkflow工作流。可以查看Worker的启动日志,确认工作流与任务队列的绑定关系。 - 修改信号处理的调用方式:将
executeChild的调用改为await方式,避免异步回调导致的上下文问题,示例代码如下:
setHandler(signals.startChildJobFileWorkflow, async (jobRefId: string) => { const jobFIleChildWorkflowId = `wf-job-file-${jobRefId}`; try { const result = await executeChild<typeof jobFileWorkflow>(jobFileWorkflow, { args: [jobRefId], taskQueue: 'job-file-1', workflowId: jobFIleChildWorkflowId, }); console.log(' some log', result); } catch (err) { console.log('Error processing child wf: ', err); } });
- 查看服务端日志:查看工作流服务(如Temporal Server)的详细日志,日志中会包含具体的错误细节,比如是找不到工作流类型,还是任务队列无对应Worker。
- 独立测试工作流:尝试直接启动一个
jobFileWorkflow实例,确认工作流本身能正常运行,排除工作流定义本身的问题。
内容的提问来源于stack exchange,提问作者Ajantha Bandara
相关产品推荐
相关产品推荐

