[Bugfix][Diffusion] Drop aborted request's orphaned async output (fix #6413) (#6439)

Signed-off-by: summer <128961079+zhang-keliang@users.noreply.github.com>
Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
summerandmultica-agent authored and GitHub committed 2026-09-23 16:58:46 +00:00
1 parent 1934d121e2
commit 7f867fb782
9 files changed
+969 -25

No files matched your search

@@ -399,3 +399,36 @@ def test_fail_engine_does_not_reenter_when_executor_shutdown_fails() -> None:
assert engine._closed is True
assert engine._shutting_down is True
assert engine._shutdown_complete is False
def test_finalize_aborted_request_drops_pending_async_output() -> None:
"""An aborted request with a pending async output must be drained (#6413).
The aborted branch of _finalize_finished_request returns before the
async_output_id branch, so without draining, the worker's late OUTPUT_READY
is cached in the executor's _completed_outputs forever. The engine must tell
the executor to drop that output id.
"""
engine = _make_engine()
engine.executor = SimpleNamespace(drop_output=Mock())
request_id = engine.scheduler.add_request(_make_request("aborted-async"))
engine.scheduler.finish_requests(request_id, DiffusionRequestStatus.FINISHED_ABORTED)
runner_output = SimpleNamespace(result=None, async_output_id="aid-async-1")
output = engine._finalize_finished_request(request_id, runner_output)
assert output.aborted is True
engine.executor.drop_output.assert_called_once_with("aid-async-1")
def test_finalize_aborted_request_without_async_output_skips_drop() -> None:
"""No async output pending -> nothing to drop; drop_output not called."""
engine = _make_engine()
engine.executor = SimpleNamespace(drop_output=Mock())
request_id = engine.scheduler.add_request(_make_request("aborted-plain"))
engine.scheduler.finish_requests(request_id, DiffusionRequestStatus.FINISHED_ABORTED)
output = engine._finalize_finished_request(request_id)
assert output.aborted is True
engine.executor.drop_output.assert_not_called()