[Bug]: rust-wheel OCR callback test expects swallowed logger exception to propagate

该报错出现在 LiteLLM 仓库自带的 rust-wheel CI 测试中,OCR 回调测试断言一个来自 CustomLogger 的 post-success 异常会向上传播,但当前 hook 只重抛 CustomGuardrail 的异常,因此断言失败。优先排查测试期望与 async_post

快速结论:该报错出现在 LiteLLM 仓库自带的 rust-wheel CI 测试中,OCR 回调测试断言一个来自 CustomLogger 的 post-success 异常会向上传播,但当前 hook 只重抛 CustomGuardrail 的异常,因此断言失败。优先排查测试期望与 async_post_call_success_deployment_hook 当前异常契约是否一致。

适用环境:LiteLLM main 分支(提交 87a7052fe8);运行 .github/workflows/test-rust.yml 中的 rust-wheel 作业。Issue 未提供具体操作系统、Python、CUDA、显卡或依赖版本。

最快修复方案:暂无确认的一步修复方案。Issue 由 #42775 解决,该 PR 把 blocking OCR callback 改为使用 CustomGuardrail;修复已在 main 上,重复 PR #42719 已关闭。

注意事项:该修复针对的是测试与 hook 异常契约不一致的问题,而非用户侧运行 LiteLLM 时的配置问题。若你在自己的测试中依赖 CustomLogger 异常在 post-success hook 中向上抛出,需要按当前契约调整为使用 CustomGuardrail。

问题场景

在 LiteLLM 仓库的 CI 中运行 rust-wheel 作业(源自 .github/workflows/test-rust.yml)时,失败测试为 tests/test_litellm_rust/ocr/test_callbacks.py::test_native_aocr_state_stashed_before_a_blocking_hook_raises_reaches_failure_callbacks。该测试期望一个来自 CustomLogger 的 post-success 异常传播到调用方,但实际 hook 会吞掉该异常并继续执行。同一失败也出现在 Realtime PR(#35600)上,而该分支并未改动此 hook 或 OCR bridge。

报错原文

Failed: DID NOT RAISE ... Blocked
1 failed, 307 passed, 46 skipped
tests/test_litellm_rust/ocr/test_callbacks.py::test_native_aocr_state_stashed_before_a_blocking_hook_raises_reaches_failure_callbacks

原因分析

最可能的原因:async_post_call_success_deployment_hook 会捕获来自 CustomLogger 的异常,只重抛来自 CustomGuardrail 的异常。测试用 Block(CustomLogger) 抛出异常并断言其传播,与 hook 当前实现契约不一致。Issue 明确指出这是测试断言与当前契约不匹配,而非 hook 本身的行为回归。

环境排查

  • 确认当前检出的 LiteLLM 分支/提交是否为 main 的 87a7052fe8 或该问题已修复之后的版本。
  • 确认 .github/workflows/test-rust.yml 中 rust-wheel 作业的触发分支与提交。
  • 确认失败测试是否为 tests/test_litellm_rust/ocr/test_callbacks.py::test_native_aocr_state_stashed_before_a_blocking_hook_raises_reaches_failure_callbacks。
  • 检查是否包含将 blocking OCR callback 改为 CustomGuardrail 的 #42775 改动。

解决步骤

  1. 确认失败现象:运行 rust-wheel 作业,核对输出是否为 Failed: DID NOT RAISE ... Blocked,以及统计是否为 1 failed, 307 passed, 46 skipped。
  2. 定位测试与 hook 的契约差异:确认 async_post_call_success_deployment_hook 捕获 CustomLogger 异常、仅重抛 CustomGuardrail 异常的行为。
  3. 按 Issue 结论对齐修复:采用 #42775 的做法,把 blocking OCR callback 改为 CustomGuardrail,使异常传播行为与测试断言一致。
  4. 若在本地分支复现,可优先尝试同步 main 上 #42775 的改动;注意 #42719 为重复 PR 且已关闭,不要误用。
  5. 重新运行 rust-wheel 作业进行验证。

验证方法

重新运行 rust-wheel 作业,确认 test_native_aocr_state_stashed_before_a_blocking_hook_raises_reaches_failure_callbacks 通过,且不再出现 Failed: DID NOT RAISE ... Blocked;整体统计不再是 1 failed。Issue 记录该修复已在 main 上生效。

参考来源

BerriAI/litellm #42714

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 25716

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注