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}