From 5869d311c987d0f826f04c4efdca1147ef6d332c Mon Sep 17 00:00:00 2001 From: vibe-code Date: Tue, 18 Aug 2026 11:00:18 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20pre-hook=20=E5=B9=82=E7=AD=89=E9=98=B2?= =?UTF-8?q?=E9=87=8D,litellm=20=E5=8F=8C=E8=B0=83=E7=94=A8=E4=B8=8D?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E9=A2=84=E6=89=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit litellm 对同一请求调用两次 async_pre_call_hook(proxy 级 + deployment 级),第二次重复预扣 inflight 但结算只释放一次, 残留累积。已在日志确认(18:46:07 每个请求 Pre-reserve 打印两次)。 修复:pre-hook 入口检查 data["metadata"] 是否已有 PREBLOCK_RESERVE_META_KEY,有则跳过预扣直接放行(幂等)。 验证:新增场景7(幂等防重),7 场景 ALL PASS。 --- volc_limit_sync.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/volc_limit_sync.py b/volc_limit_sync.py index f4e74e2..556c7aa 100644 --- a/volc_limit_sync.py +++ b/volc_limit_sync.py @@ -1189,6 +1189,16 @@ class DailyLimitHandler(CustomLogger): level="DEBUG", ) + # 幂等防重:litellm 对同一请求可能调用两次 async_pre_call_hook + # (proxy 级 + deployment 级),第二次预扣会重复占 inflight 且 + # 结算只释放一次 → 残留累积。已有 reserve 标记时跳过预扣直接放行。 + try: + _existing_meta = data.get("metadata") or {} + if isinstance(_existing_meta, dict) and PREBLOCK_RESERVE_META_KEY in _existing_meta: + return data + except Exception: + pass + blocked = _check_request_block(data["model"], reserve=reserve) if not blocked: # 放行:Lua 原子闸门已把 reserve 预扣进 inflight 账户。