Skip to content

fix(quick-video): no reanudar batches cancelados tras un reinicio - #15

Merged
IAnMove merged 1 commit into
mainfrom
cursor/critical-bug-management-4e28
Aug 23, 2026
Merged

fix(quick-video): no reanudar batches cancelados tras un reinicio#15
IAnMove merged 1 commit into
mainfrom
cursor/critical-bug-management-4e28

Conversation

@cursor

@cursor cursor Bot commented Aug 23, 2026

Copy link
Copy Markdown

Un lote de Quick Video en cancelling se persistía así si Cancel coincidía con un cierre, crash o reinicio. recover() trataba cancelling como estado activo, lo reescribía a queued y arrancaba un worker. El usuario había pedido parar; el lote volvía a gastar GPU.

Qué cambia

  • Tras un reinicio, un checkpoint cancelling se finaliza como cancelled y no relanza el worker.
  • Los ítems planning/running de ese lote también quedan cancelled.
  • Los lotes queued/running interrumpidos siguen recuperándose como hasta ahora.

Cómo reproducir

  1. Lanzar un lote overnight de Quick Video.
  2. Pulsar Cancel (status cancelling) y cerrar/matar el proceso antes de que el worker persista cancelled.
  3. Al reabrir, GET /api/v1/stories/quick-video-batches (o el recover de arranque) reencolaba el lote.

Validación
pytest tests/test_quick_video_batches.py — 11 passed.

Open in Web View Automation 

Note

Medium Risk
Touches durable job recovery and cancel semantics; a mistake could either skip legitimate restarts or still relaunch cancelled GPU work. Scope is a small, well-tested branch in recover().

Overview
Stops overnight Quick Video recovery from treating a persisted cancelling checkpoint as an interrupted run. After a crash or restart mid-cancel, recover() now finalizes the batch (and in-flight planning/running items) as cancelled, publishes that snapshot, and does not start a worker.

queued/running jobs still get the existing interrupt-and-requeue path. A regression test seeds a stale cancelling checkpoint and asserts listing does not relaunch GPU work.

Reviewed by Cursor Bugbot for commit ccbe754. Configure here.

recover() trataba status=cancelling como trabajo activo y lo reescribía
a queued, así que un Cancel seguido de crash/reinicio volvía a gastar
GPU en un lote que el usuario ya había parado.

Co-authored-by: ignaciodelcano+dcl <ignaciodelcano+dcl@gmail.com>
@IAnMove
IAnMove marked this pull request as ready for review August 23, 2026 12:58
@IAnMove
IAnMove merged commit 1951ee8 into main Aug 23, 2026
3 of 5 checks passed
@cursor
cursor Bot requested a review from IAnMove August 23, 2026 13:07

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Risk: medium. Left a non-blocking comment: Bugbot and Security Agent completed with no findings, but GitHub blocks this automation from approving a Cursor-authored PR. Assigned IAnMove for human approval.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Router and Approver

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants