diff --git a/python/sglang/srt/disaggregation/nixl/conn.py b/python/sglang/srt/disaggregation/nixl/conn.py index 49314582d344..f1821448be18 100644 --- a/python/sglang/srt/disaggregation/nixl/conn.py +++ b/python/sglang/srt/disaggregation/nixl/conn.py @@ -2517,12 +2517,14 @@ def _track_kv_arrival( self.transfer_statuses[room].num_pp_ranks_expected = ( self.required_prefill_response_num_table.get(room, 1) ) - if ( - self.enable_staging - and self._staging_handler is not None - and self._staging_handler.is_staging_room(room) - ): - self._maybe_submit_last_scatter(room) + # Staging may defer chunks, so an earlier chunk can arrive after the last one. + # any arrival chunk maybe the last for scatter. + if ( + self.enable_staging + and self._staging_handler is not None + and self._staging_handler.is_staging_room(room) + ): + self._maybe_submit_last_scatter(room) def _track_kv_part_arrival( self,