fix: cover archived stuck documents in scanner
This commit is contained in:
@@ -703,10 +703,9 @@ async def _scan_and_fail_stuck_documents(*, timeout_minutes: int) -> dict[str, A
|
|||||||
END
|
END
|
||||||
))::bigint AS idle_seconds
|
))::bigint AS idle_seconds
|
||||||
FROM leaudit_documents d
|
FROM leaudit_documents d
|
||||||
JOIN leaudit_audit_runs ar
|
LEFT JOIN leaudit_audit_runs ar
|
||||||
ON ar.id = d.current_run_id
|
ON ar.id = d.current_run_id
|
||||||
WHERE d.deleted_at IS NULL
|
WHERE d.deleted_at IS NULL
|
||||||
AND d.is_latest_version = true
|
|
||||||
AND (
|
AND (
|
||||||
LOWER(COALESCE(ar.status, '')) IN ('pending', 'queued', 'running', 'retrying')
|
LOWER(COALESCE(ar.status, '')) IN ('pending', 'queued', 'running', 'retrying')
|
||||||
OR LOWER(COALESCE(d.processing_status, '')) IN ('waiting', 'queued', 'running', 'processing')
|
OR LOWER(COALESCE(d.processing_status, '')) IN ('waiting', 'queued', 'running', 'processing')
|
||||||
@@ -741,7 +740,7 @@ async def _scan_and_fail_stuck_documents(*, timeout_minutes: int) -> dict[str, A
|
|||||||
|
|
||||||
for row in timed_out_rows:
|
for row in timed_out_rows:
|
||||||
document_id = int(row["document_id"])
|
document_id = int(row["document_id"])
|
||||||
run_id = int(row["run_id"])
|
run_id = int(row["run_id"]) if row.get("run_id") is not None else None
|
||||||
idle_seconds = int(row.get("idle_seconds") or 0)
|
idle_seconds = int(row.get("idle_seconds") or 0)
|
||||||
run_phase = row.get("phase")
|
run_phase = row.get("phase")
|
||||||
run_status = row.get("run_status")
|
run_status = row.get("run_status")
|
||||||
@@ -757,23 +756,24 @@ async def _scan_and_fail_stuck_documents(*, timeout_minutes: int) -> dict[str, A
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
await _update_status_safe(document_id, "failed")
|
await _update_status_safe(document_id, "failed")
|
||||||
await storage.fail_run(
|
if run_id is not None:
|
||||||
document_id,
|
await storage.fail_run(
|
||||||
run_id=run_id,
|
document_id,
|
||||||
phase=run_phase or "dispatch",
|
run_id=run_id,
|
||||||
message=message,
|
phase=run_phase or "dispatch",
|
||||||
detail_json={
|
message=message,
|
||||||
"reason": "stuck_timeout",
|
detail_json={
|
||||||
"timeoutMinutes": timeout_minutes,
|
"reason": "stuck_timeout",
|
||||||
"idleSeconds": idle_seconds,
|
"timeoutMinutes": timeout_minutes,
|
||||||
"taskId": row.get("task_id"),
|
"idleSeconds": idle_seconds,
|
||||||
"runStatus": run_status,
|
"taskId": row.get("task_id"),
|
||||||
"processingStatus": processing_status,
|
"runStatus": run_status,
|
||||||
"phase": run_phase,
|
"processingStatus": processing_status,
|
||||||
"fileName": file_name,
|
"phase": run_phase,
|
||||||
"region": row.get("region"),
|
"fileName": file_name,
|
||||||
},
|
"region": row.get("region"),
|
||||||
)
|
},
|
||||||
|
)
|
||||||
failed_items.append(
|
failed_items.append(
|
||||||
{
|
{
|
||||||
"document_id": document_id,
|
"document_id": document_id,
|
||||||
|
|||||||
Reference in New Issue
Block a user