Snowflake父任务挂起后子任务恢复未运行及调度异常问题咨询
任务调度异常排查方案
子任务恢复后未运行排查方向
- 校验子任务依赖配置:如果子任务保留了
after子句,即使手动恢复,调度引擎仍会校验after关联的上游任务状态,若上游未达到完成要求、或依赖的触发条件(如上游连续成功、特定触发标识)未满足,子任务会保持待触发状态不会运行。 - 确认子任务运行窗口:检查子任务的调度起止时间、允许运行的时间段配置,若恢复时间不在子任务的允许运行范围内,任务会直接被标记为过期跳过。
- 核对根任务操作顺序:确认根任务调用SP的执行顺序,若先执行根任务挂起操作、再触发子任务恢复,部分调度引擎会因为根任务处于挂起状态,自动将其关联的子任务标记为阻塞,不会触发执行。
- 检查子任务并发配置:如果子任务配置了最大并发运行数为0,或同时运行的同批次子任务已经达到并发上限,恢复的子任务会进入排队队列不会立即运行。
根任务恢复后调度时间异常修复方案
你配置的根任务cron规则为cron 15/5 6 * * * TZ,属于每5分钟触发一次的周期任务,出现该异常的核心原因是:调度引擎默认恢复挂起的周期任务时,会优先匹配最近的可执行cron时间点,你只是将当日根任务实例挂起、没有标记为「当日运行已完成」,因此引擎会匹配当日还未执行的最近5分钟间隔时间点触发,而不会直接跳转到次日。
可通过以下两种方式修复:
- 修改子任务调用的SP逻辑:恢复根任务前,先将根任务的当日运行实例标记为
已完成或已跳过,调度引擎识别当日实例已处理完毕,会自动匹配下一日的第一个cron时间点触发。 - 若调度引擎支持恢复时指定触发时间:在SP调用恢复接口时,直接传入次日的目标触发时间,覆盖引擎默认的最近cron匹配逻辑。
内容的提问来源于stack exchange,提问作者Sayantan Mandal
相关产品推荐
相关产品推荐

