fix(FN-1473): recover no-progress task_done failures
This commit is contained in:
@@ -606,6 +606,12 @@ export class TaskExecutor {
|
||||
return task.steps.every((s) => s.status === "done" || s.status === "skipped");
|
||||
}
|
||||
|
||||
private isNoProgressNoTaskDoneFailure(task: Task): boolean {
|
||||
return task.status === "failed" &&
|
||||
task.error?.includes("without calling task_done") === true &&
|
||||
task.steps.every((step) => step.status === "pending");
|
||||
}
|
||||
|
||||
private async clearResumeFailureState(task: Task): Promise<void> {
|
||||
if (task.status === "failed" || task.error) {
|
||||
await this.store.updateTask(task.id, { status: null, error: null });
|
||||
@@ -736,6 +742,11 @@ export class TaskExecutor {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (this.isNoProgressNoTaskDoneFailure(task)) {
|
||||
executorLog.log(`${task.id} failed without task_done and has no step progress — leaving for self-healing requeue`);
|
||||
continue;
|
||||
}
|
||||
|
||||
executorLog.log(`Resuming ${task.id}: ${task.title || task.description.slice(0, 60)}`);
|
||||
try {
|
||||
await this.clearResumeFailureState(task);
|
||||
|
||||
Reference in New Issue
Block a user