Skip to content

v1.0.2

Choose a tag to compare

@github-actions github-actions released this 13 Sep 09:18
· 22 commits to main since this release
e1c0bbc

修复分布式链路缺陷并接通死信队列/时间轮/指标

缺陷修复:

  • RedisLock.extend 多锁续期串扰:改用 per-key owner + LUA_EXTEND 原子校验持有者
  • RedisTaskRepository.save 状态索引残留:写入前先 SREM 旧状态集合
  • queue:delayed 旁路迁移优先级硬编码 score=5(低于最低档)→ TaskPriority.NORMAL
  • 孤儿回收误伤其他节点任务:改经 TaskRepository.list_by_status + node_id 过滤,memory/sqlite/redis三后端一致
  • HeartbeatManager 与 NodeManager 统一到 neotask:node:* / neotask:nodes 三态注册表
  • 队列满静默丢任务:任务置 FAILED 回滚并抛 QueueFullError,不再永久停在 PENDING
  • 延时任务回调异常被静默吞掉 → 记录 error 日志
  • 延时任务到期提升回优先级队列失败无人知 → 记录 error 日志
  • 周期任务 missed 策略落地:IGNORE/SKIP(同义,仅推进 next_run)、RUN_ONCE、CATCH_UP(补跑 ≤5)
  • run_immediately 在 PeriodicTaskManager 路径打通,受 start_at 约束
  • 失败任务纳入 avg_retry_count 样本,修正指标系统性偏低
  • 健康检查返回真实状态:TTL 5s 复用、单项 5s 超时、psutil 缺失降级 available:false
  • 预取空批指数退避(0.1→0.5s,对齐 worker 侧)+ 停机 drain_back 还原真实优先级
  • ConsistentHashSharder 的 md5/sha1 补 usedforsecurity=False,兼容 FIPS 环境
  • 其他异常问题优化

组件接线:

  • 死信队列接入 WorkerPool 与回收器(最终失败/超重试时投递,默认启用)
  • TimeWheel 接入 submit_delayed/submit_at:opt-in、量程外回退延时队列、等待期取消安全、shutdown drain
  • MetricsCollector 启停接入 TaskPool,事件订阅覆盖 6 类(含 task.retry)

测试:

  • 补充周期任务 missed 策略与 Redis 锁多锁续期用例