• Stefy Lanza (nextime / spora )'s avatar
    video: a LongCat generation can be cancelled (v0.2.64) · af03947e
    Stefy Lanza (nextime / spora ) authored
    Asked to stop an offloaded render, I killed the service process by hand — and had
    to, because nothing else could. Every diffusers video path calls
    task_registry.raise_if_cancelled() between denoise steps and shows up on the Tasks
    page; LongCat was never registered at all. So the LONGEST-running video job in the
    system was the only one with no stop button: a 93-frame bf16 render offloading
    across PCIe can go for a very long time.
    
    Its poll loop claimed otherwise. The docstring said it would "carry cancellation
    and the thermal gate across the process boundary" and the body did neither — it
    only mirrored progress. A comment describing intent rather than behaviour.
    
    It is now registered like the others, reports step progress to the task, and polls
    for cancellation every 2s. Because the work happens in ANOTHER PROCESS, cancelling
    cannot raise inside it: the service is stopped instead, which is exactly what
    eviction already does to it, so that path is well exercised. The request then ends
    499 rather than returning a partial video as success, and the task is closed on
    every exit — cancelled, error or done.
    
    I also owe a correction: I told the user there was no cancel for
    /v1/video/generations. There is, for every other model — I searched for a
    /v1/video/* endpoint and missed the task registry. The gap was LongCat
    specifically, which is code I wrote.
    
    7 tests.
    Co-Authored-By: 's avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_0182DhR1eFNPQyGmDrpHbedY
    af03947e
test_longcat_cancellable.py 2.32 KB