Skip to content

fix: remove safe.block from upload_log to enable transport-layer retry - #1716

Merged
SAKURA-CAT merged 2 commits into
mainfrom
fix/upload-log
Jul 29, 2026
Merged

SAKURA-CAT merged 2 commits into
mainfrom
fix/upload-log

Conversation

@SAKURA-CAT

Copy link
Copy Markdown
Member

Summary

upload_log 方法被 safe.block() 包裹,导致 ApiError 异常被静默吞掉,transport 层的重试机制对日志上传完全失效。本次变更移除 safe.block,使 upload_log 的错误传播行为与 upload_scalar、upload_media 保持一致——ApiError 正确穿透到 upload() dispatcher,由后者根据状态码决定重试(5xx re-raise)或放弃(4xx swallow)。

Changes

  • swanlab/sdk/internal/core_python/transport/sender.py: 移除 upload_log 方法的 safe.block 包裹,解除因异常被静默吞掉导致的日志上传重试失效问题。
  • tests/unit/sdk/internal/core_python/transport/test_sender_retry.py (新增): 重试契约测试,覆盖:
    • retries=0 约定:验证所有上传 API 的 HTTP 层不自行重试
    • 5xx ApiError 传播:验证错误穿透 handler → sender.upload,transport 层可重试
    • 4xx ApiError 吞掉:验证业务拒绝不触发重试
    • 成功递进:验证上传成功后 uploaded_records 正确推进

Testing

  • 13 个新增重试契约测试全部通过
  • 覆盖 scalar / log / column 三种记录类型的 4xx、5xx 及成功路径

@SAKURA-CAT SAKURA-CAT added the 🐛 bug Something isn't working label Jul 29, 2026
@SAKURA-CAT SAKURA-CAT self-assigned this Jul 29, 2026
The mock_metrics_api fixture was missing from several test methods and
fixtures in TestInitOnlineMode, causing test failures when the metrics
endpoint is called during online init.
@SAKURA-CAT
SAKURA-CAT requested a review from Nexisato July 29, 2026 06:11
@SAKURA-CAT
SAKURA-CAT merged commit 56321ff into main Jul 29, 2026
19 checks passed
@SAKURA-CAT
SAKURA-CAT deleted the fix/upload-log branch July 29, 2026 06:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🐛 bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants