fix: stabilize code queue retry claims
This commit is contained in:
@@ -583,6 +583,14 @@ function terminalTask(task: QueueTask): boolean {
|
||||
return task.status === "succeeded" || task.status === "failed" || task.status === "canceled";
|
||||
}
|
||||
|
||||
function hasClaimMarkers(task: QueueTask): boolean {
|
||||
return task.startedAt !== null
|
||||
|| task.currentAttempt > 0
|
||||
|| task.codexThreadId !== null
|
||||
|| task.activeTurnId !== null
|
||||
|| task.attempts.length > 0;
|
||||
}
|
||||
|
||||
function terminalTaskUnread(task: QueueTask): boolean {
|
||||
return terminalTask(task) && task.readAt === null;
|
||||
}
|
||||
@@ -1462,8 +1470,8 @@ function taskListResponse(task: QueueTask, lite = true): JsonRecord {
|
||||
reasoningEffort: task.reasoningEffort,
|
||||
maxAttempts: task.maxAttempts,
|
||||
status: task.status,
|
||||
queuedReason: task.status === "queued" ? { code: "mgr-visible", label: "QUEUED", message: "Task is visible from master code-queue-mgr; D601 scheduler will pick it up from PostgreSQL." } : null,
|
||||
queuedReasonLabel: task.status === "queued" ? "QUEUED" : null,
|
||||
queuedReason: (task.status === "queued" || task.status === "retry_wait") ? { code: "mgr-visible", label: task.status === "retry_wait" ? "RETRY" : "QUEUED", message: "Task is visible from master code-queue-mgr; D601 scheduler will pick it up from PostgreSQL." } : null,
|
||||
queuedReasonLabel: task.status === "retry_wait" ? "RETRY" : task.status === "queued" ? "QUEUED" : null,
|
||||
createdAt: task.createdAt,
|
||||
updatedAt: task.updatedAt,
|
||||
startedAt: task.startedAt,
|
||||
@@ -1915,7 +1923,7 @@ async function retryTask(taskId: string, req: Request): Promise<Response> {
|
||||
if (rows[0] === undefined) return { task: null, changed: false };
|
||||
const nextTask = rowToTask(rows[0]);
|
||||
if (!terminalTask(nextTask)) return { task: nextTask, changed: false };
|
||||
nextTask.status = "queued";
|
||||
nextTask.status = hasClaimMarkers(nextTask) ? "retry_wait" : "queued";
|
||||
nextTask.finishedAt = null;
|
||||
nextTask.readAt = null;
|
||||
nextTask.cancelRequested = false;
|
||||
|
||||
Reference in New Issue
Block a user