Skip to content

Firefly v1.0.6

发布日期:2026-08-09

v1.0.6 聚焦 Scheduler 恢复能力、单节点并发边界和集群运行成本。任务推进失败不再让本地时间索引长期丢失任务;虚拟线程执行保留轻量特性,同时增加明确的 admission、拒绝指标和关闭期限。

构件发布状态

当前页面对应 v1.0.6 候选集成分支。源码 tag 和 Maven Central 构件尚未发布,生产升级前请在 Central Portal 确认版本状态。

调度恢复

  • TimingIndex 取出到期任务后,如果游标推进、Outbox 写入或本地派发失败,会立即标记强制重载。
  • 下一次 tick 从持久化仓储恢复,不再等待配置变化、分片切换或服务重启。
  • revision 使用独立刷新周期,默认 PT1S,不再跟随每次 500ms 空闲唤醒查询数据库。
  • 强制恢复使用独立 reloadRequired 状态,不受 revision 降频限制。

Worker 背压与 FORBID

  • 本地 Handler 使用虚拟线程和非阻塞 admission,默认最多接受 256 个在途任务。
  • 饱和时立即拒绝提交,由 Dispatch Outbox 重试链路承担回压。
  • FORBID 使用 CAS 原子抢占,避免并发提交同时通过检查。
  • 持久化失败、线程池拒绝和 Handler 异常都会释放计数;completion 在释放后完成。
  • worker 默认等待 30 秒关闭,超时后中断剩余任务。

集群与数据库

  • ShardManager.renewAll 提供批量租约续期边界。
  • JDBC 单轮续租复用一个连接、一次数据库时间和一次 executeBatch
  • lease 继续校验 owner、fencing token 和有效期,集群 fencing 语义不变。
  • DRAINING 节点跳过 shard、Outbox 和 execution target 周期聚合。

HTTP 与可观测性

服务工作线程等待容量
Admin HTTP32256
Prometheus HTTP864
Gateway 内部转发32256

Prometheus 单次抓取复用 Outbox 和 Execution 状态快照,并新增:

  • firefly_local_worker_active
  • firefly_local_worker_max_concurrency
  • firefly_local_worker_rejections_total

新增配置

properties
firefly.worker.max-concurrency=256
firefly.worker.shutdown-timeout=PT30S
firefly.scheduler.configuration-refresh-interval=PT1S

对应环境变量为 FIREFLY_WORKER_MAX_CONCURRENCYFIREFLY_WORKER_SHUTDOWN_TIMEOUTFIREFLY_SCHEDULER_CONFIGURATION_REFRESH_INTERVAL

兼容性

  • 无数据库 Schema 迁移。
  • 无 Netty/Executor 协议变更。
  • 无 Admin API 请求或响应格式变更。
  • worker 饱和时,任务会更早进入 Outbox 重试,而不是无限制创建虚拟线程。

验证

  • 仓储首次推进失败后下一 tick 恢复执行。
  • 高频 tick 下按独立周期刷新 revision。
  • 16 个并发调用竞争同一 FORBID 任务时只接受一个。
  • 首次 execution 持久化失败后可以再次提交。
  • worker admission 饱和、JDBC batch 续租和新增指标均有聚焦测试。
  • 全模块 gradle test --no-daemon 通过。

Released under the Apache-2.0 License.