07 · 执行与失败恢复

长任务可能遇到断线、超时或进程重启。Northstar 保存原目标、授权、执行尝试和结果,恢复时先核对已完成的工作,再决定继续、重试或等待处理。

把要做的事和每次尝试分别记录

目标记录(ActionGoal)保存对象、来源版本、成功条件和授权范围;执行尝试(GoalAttempt)保存本次调用的参数、进度与回执。一次尝试失败,仍可以找到原目标和之前的结果。

是否达成目标,由负责该业务对象的模块重新核验。重试需要继续满足原授权与版本条件,涉及目标或范围变化时重新确认。

重复提交可以找到同一次执行

结构化请求使用稳定的内容指纹与作用范围绑定执行记录。连续点击、刷新或丢失响应后再次提交同一请求时,系统可以读取已有执行及其结果,减少重复发起操作。

参数、版本或授权发生变化时,先判断这是新动作还是冲突。对外部系统的操作,还需要结合实际回执核对结果。

多批次任务保存已完成部分

多项确认和分批写入为各批次保存身份、状态与结果。例如前两批 TD 问题处理成功、第三批失败,已经完成的记录会保留,剩余工作通过原流程的恢复位置继续核对。

已接入分批恢复的流程记录恢复游标,即上次处理到的位置。整体结果只有在所有必需批次完成后才标记为完成,其他情况明确显示部分完成、等待或失败。

结果不明时,先读回再重试

文件或远端可能已经接受修改,只是返回结果时断线。恢复需要读取原回执、目标内容与版本,判断这次操作实际发生到了哪里。

核对结果处理方式
已经完成读回结果或补齐尚未完成的交付步骤。
确认未执行核对原授权与重试条件后继续。
结果未知查询原记录或请求人工核对,保留不确定状态。
版本冲突先处理冲突,再判断原动作是否仍可继续。

错误分类决定恢复路径

符合条件的临时错误可以有界重试;凭据或模型配置错误需要修正配置;审批和用户问题保持等待。结果未知、版本冲突或已发生副作用的操作,需要相应的核对流程。

自动恢复停滞时保留可检查的失败与重试入口。恢复能力取决于该操作保存的回执和成功条件,无法核验时会保留阻塞。

断线后接回服务端任务

运行事件先持久化,再通过服务端事件流(SSE)推送。客户端保存接收位置,重连后回放遗漏记录,并继续读取原执行的实时进展。收到请求、正在执行和业务完成各有状态。

界面重载通常可以重新观察服务端已有任务;进程崩溃后的处理则需要重新核对执行现场和结果,两种恢复各有条件。

停止、续接与历史恢复各有范围

取消操作绑定具体产品、会话与执行,等待实际停止回执。服务重启先关闭新任务准入,再等待受管执行结束或记录待处理状态,以便之后核对。

本篇讨论的是把一项未完成工作继续处理。若需要撤回此前成果、回到某个协作现场,使用下一篇介绍的 恢复点与回滚。停止执行本身不会撤销已经写入的内容。