fix: unreachable error check in retraction (#15433)

Co-authored-by: Liangsheng Yin <lsyincs@gmail.com>
This commit is contained in:
shuwenn
2025-12-19 16:33:34 +08:00
committed by GitHub
co-authored by Liangsheng Yin
parent 65c098592d
commit fb17845723
+6 -18
View File
@@ -1746,21 +1746,7 @@ class ScheduleBatch(ScheduleBatchDisaggregationDecodeMixin):
) )
): ):
if len(sorted_indices) == 1: if len(sorted_indices) == 1:
# Corner case: only one request left # Always keep at least one request
if self.is_hybrid_swa:
full_available_size = (
self.token_to_kv_pool_allocator.full_available_size()
)
swa_available_size = (
self.token_to_kv_pool_allocator.swa_available_size()
)
assert (
full_available_size > 0 and swa_available_size > 0
), f"No space left for only one request in SWA mode {full_available_size=}, {swa_available_size=}"
else:
assert (
self.token_to_kv_pool_allocator.available_size() > 0
), f"No space left for only one request, {self.token_to_kv_pool_allocator.available_size()=}"
break break
first_iter = False first_iter = False
@@ -1770,10 +1756,12 @@ class ScheduleBatch(ScheduleBatchDisaggregationDecodeMixin):
# release memory and don't insert into the tree because we need the space instantly # release memory and don't insert into the tree because we need the space instantly
self.release_req(idx, len(sorted_indices), server_args) self.release_req(idx, len(sorted_indices), server_args)
if len(retracted_reqs) == 0: if len(sorted_indices) <= 1 and not self.check_decode_mem(
# Corner case: only one request left selected_indices=sorted_indices, buf_multiplier=buf_multiplier
):
# Retracting loops ends and still not enough memory
raise ValueError( raise ValueError(
"Failed to retract any request. No space left for only one request." "Out of memory even after retracting all other requests in the decode batch."
) )
self.filter_batch(keep_indices=sorted_indices) self.filter_batch(keep_indices=sorted_indices)