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 HTTP | 32 | 256 |
| Prometheus HTTP | 8 | 64 |
| Gateway 内部转发 | 32 | 256 |
Prometheus 单次抓取复用 Outbox 和 Execution 状态快照,并新增:
firefly_local_worker_activefirefly_local_worker_max_concurrencyfirefly_local_worker_rejections_total
新增配置
properties
firefly.worker.max-concurrency=256
firefly.worker.shutdown-timeout=PT30S
firefly.scheduler.configuration-refresh-interval=PT1S对应环境变量为 FIREFLY_WORKER_MAX_CONCURRENCY、FIREFLY_WORKER_SHUTDOWN_TIMEOUT 和 FIREFLY_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通过。