You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

1.7 KiB

07 — 失败处理 + 定时重试

What to build: 缩略图生成失败后的重试与恢复机制。ThumbnailGenerationTask 的生成逻辑包裹 try-catch:捕获异常时 thumbnail_retry_count++,若 retry_count < retry-limit(默认 3)则保持 PENDING 状态等待重试,等于 3 则置 FAILED。新建 ThumbnailRetryTask(@Scheduled,cron 走 crm.file.thumbnail.retry-cron 默认每天凌晨 4 点),扫描 thumbnail_status = FAILED 的记录,重置为 PENDING 并重新提交异步生成任务。getThumbnail 遇到 FAILED 状态时返回占位图 + no-cache(已由 02 实现)。完成后即使 LibreOffice 临时故障导致生成失败,定时任务会在故障恢复后自动重试。

Blocked by: 03 — 图片异步生成

Status: ready-for-agent

  • ThumbnailGenerationTask 生成逻辑 try-catch:异常时 retry_count++,小于 retry-limit 保持 PENDING,等于则置 FAILED
  • 生成成功后 retry_count 归零(与 03 的成功路径一致,本票确认行为)
  • ThumbnailRetryTask 新建(@Scheduled cron = ${crm.file.thumbnail.retry-cron:0 0 4 * * ?}
  • 重试任务扫描 thumbnail_status = FAILED 的记录 → 重置 PENDING → 重新提交异步生成
  • 重试任务异常不致命(try-catch 包裹,日志告警,下个周期重试,复用 OrphanChunkCleanupTask 模式)
  • 测试:生成失败 + retry_count < 3 → retry_count++,状态保持 PENDING
  • 测试:生成失败 + retry_count = 3 → 状态置 FAILED
  • 测试:生成成功 → retry_count 归零
  • 测试:ThumbnailRetryTask 扫描 FAILED 记录 → 重置 PENDING + 提交异步任务
  • 测试:重试任务自身异常不 crash(日志告警,下周期继续)