From a46c1de7b6f14a2a4630efc454f7c8aadba395cc Mon Sep 17 00:00:00 2001 From: Nick Hill Date: Mon, 28 Jul 2025 13:30:37 +0100 Subject: [PATCH] [P/D] Log warnings related to prefill KV expiry Signed-off-by: Nick Hill --- .../kv_transfer/kv_connector/v1/nixl_connector.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/vllm/distributed/kv_transfer/kv_connector/v1/nixl_connector.py b/vllm/distributed/kv_transfer/kv_connector/v1/nixl_connector.py index c06cda356f571..1405b5ce65f90 100644 --- a/vllm/distributed/kv_transfer/kv_connector/v1/nixl_connector.py +++ b/vllm/distributed/kv_transfer/kv_connector/v1/nixl_connector.py @@ -1025,6 +1025,11 @@ class NixlConnectorWorker: # Sorted dict, oldest requests are put first so we can exit early. if now < expires: break + count = self.consumer_notification_counts_by_req.pop(req_id, 0) + logger.warning( + "Releasing expired KV blocks for request %s which were " + "retrieved by %d decode worker(s) within %d seconds.", req_id, + count, envs.VLLM_NIXL_ABORT_REQUEST_TIMEOUT) del self._reqs_to_send[req_id] done_sending.add(req_id) @@ -1040,6 +1045,12 @@ class NixlConnectorWorker: for notifs in self.nixl_wrapper.get_new_notifs().values(): for notif in notifs: req_id, tp_ratio = notif.decode("utf-8").rsplit(":", 1) + if req_id not in self._reqs_to_send: + logger.warning( + "Potentially invalid KV blocks for " + "unrecognized request %s were retrieved by " + "a decode worker. They may have expired.", req_id) + self.consumer_notification_counts_by_req[req_id] += 1 # Wait all consumers (D) to be done reading before freeing. if self.consumer_notification_counts_by_req[req_id] == int(