From d4d4b04d66207f1695c687860640f9f18821e04e Mon Sep 17 00:00:00 2001 From: Lianmin Zheng Date: Wed, 6 May 2026 05:30:11 -0700 Subject: [PATCH] [PD] Fix missing update_status call in abort() across all KV backends (#24522) --- python/sglang/srt/disaggregation/common/conn.py | 4 ++-- .../sglang/srt/disaggregation/mooncake/conn.py | 16 ---------------- python/sglang/srt/disaggregation/mori/conn.py | 1 - .../sglang/srt/observability/req_time_stats.py | 1 + 4 files changed, 3 insertions(+), 19 deletions(-) diff --git a/python/sglang/srt/disaggregation/common/conn.py b/python/sglang/srt/disaggregation/common/conn.py index 79784ffce..05f385f69 100644 --- a/python/sglang/srt/disaggregation/common/conn.py +++ b/python/sglang/srt/disaggregation/common/conn.py @@ -544,7 +544,7 @@ class CommonKVSender(BaseKVSender): self.bootstrap_room, "Aborted by AbortReq.", ) - # Explicitly set the status to failure since this request has been aborted + self.kv_mgr.update_status(self.bootstrap_room, KVPoll.Failed) self.conclude_state = KVPoll.Failed @@ -739,7 +739,7 @@ class CommonKVReceiver(BaseKVReceiver): self.bootstrap_room, "Aborted by AbortReq.", ) - # Explicitly set the status to failure since this request has been aborted + self.kv_mgr.update_status(self.bootstrap_room, KVPoll.Failed) self.conclude_state = KVPoll.Failed diff --git a/python/sglang/srt/disaggregation/mooncake/conn.py b/python/sglang/srt/disaggregation/mooncake/conn.py index 2bd1fe461..5c594027e 100644 --- a/python/sglang/srt/disaggregation/mooncake/conn.py +++ b/python/sglang/srt/disaggregation/mooncake/conn.py @@ -1753,14 +1753,6 @@ class MooncakeKVSender(CommonKVSender): ) raise KVTransferError(self.bootstrap_room, failure_reason) - def abort(self): - self.kv_mgr.record_failure( - self.bootstrap_room, - "Aborted by AbortReq.", - ) - # Explicitly set the status to failure since this request has been aborted - self.conclude_state = KVPoll.Failed - class MooncakeKVReceiver(CommonKVReceiver): def __init__( @@ -1942,14 +1934,6 @@ class MooncakeKVReceiver(CommonKVReceiver): ) raise KVTransferError(self.bootstrap_room, failure_reason) - def abort(self): - self.kv_mgr.record_failure( - self.bootstrap_room, - "Aborted by AbortReq.", - ) - # Explicitly set the status to failure since this request has been aborted - self.conclude_state = KVPoll.Failed - class MooncakeKVBootstrapServer(CommonKVBootstrapServer): pass diff --git a/python/sglang/srt/disaggregation/mori/conn.py b/python/sglang/srt/disaggregation/mori/conn.py index d657c4c68..c299e8d39 100644 --- a/python/sglang/srt/disaggregation/mori/conn.py +++ b/python/sglang/srt/disaggregation/mori/conn.py @@ -1107,7 +1107,6 @@ class MoriKVReceiver(CommonKVReceiver): if self.bootstrap_room is None: return super().abort() - self.kv_mgr.update_status(self.bootstrap_room, KVPoll.Failed) self.clear() diff --git a/python/sglang/srt/observability/req_time_stats.py b/python/sglang/srt/observability/req_time_stats.py index 0ad222392..09eda88e5 100644 --- a/python/sglang/srt/observability/req_time_stats.py +++ b/python/sglang/srt/observability/req_time_stats.py @@ -859,6 +859,7 @@ class SchedulerReqTimeStats(ReqTimeStatsBase): else: if self.prefill_transfer_queue_entry_time <= 0 or self.completion_time <= 0: return result if result else None + # Note: This only capture the last chunk time transfer_latency_s = ( self.completion_time - self.prefill_transfer_queue_entry_time )