From 6438407f5b02a700c80792377a1a21aa4ff0a06a Mon Sep 17 00:00:00 2001 From: Myron Blair Date: Mon, 27 Jul 2026 17:25:52 -0500 Subject: [PATCH] Fix retry-all-failed silently no-oping when content already has a queued job Also lift the artificial 500-row cap on the retry-failed query. --- backend/server.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/backend/server.py b/backend/server.py index dd4a8ca..2dca616 100644 --- a/backend/server.py +++ b/backend/server.py @@ -714,15 +714,19 @@ async def retry_job(job_id: str, user: dict = Depends(require_admin)): if job["status"] not in ("failed", "cancelled"): raise HTTPException(status_code=400, detail="Only failed/cancelled jobs can be retried") new_job = await _enqueue_transcode(job["movie_id"], job["quality"], triggered_by=job.get("triggered_by", "manual"), content_type=job.get("content_type", "movie")) + if new_job["id"] != job["id"]: + await db.transcode_queue.delete_one({"id": job["id"]}) return {"ok": True, "job_id": new_job["id"]} @api.post("/transcode/queue/retry-failed") async def retry_all_failed(user: dict = Depends(require_admin)): - jobs = await db.transcode_queue.find({"status": {"$in": ["failed", "cancelled"]}}, {"_id": 0}).to_list(500) + jobs = await db.transcode_queue.find({"status": {"$in": ["failed", "cancelled"]}}, {"_id": 0}).to_list(None) retried = 0 for job in jobs: - await _enqueue_transcode(job["movie_id"], job["quality"], triggered_by=job.get("triggered_by", "manual"), content_type=job.get("content_type", "movie")) + new_job = await _enqueue_transcode(job["movie_id"], job["quality"], triggered_by=job.get("triggered_by", "manual"), content_type=job.get("content_type", "movie")) + if new_job["id"] != job["id"]: + await db.transcode_queue.delete_one({"id": job["id"]}) retried += 1 return {"ok": True, "retried": retried}