Skip to content

Firefly v1.0.6

Release date: August 9, 2026

v1.0.6 focuses on Scheduler recovery, explicit single-node concurrency limits, and lower cluster coordination costs. Failed scheduling advances no longer leave jobs missing from the local timing index, while virtual-thread execution gains bounded admission, rejection metrics, and a shutdown deadline.

Artifact publication status

This page describes the v1.0.6 release candidate integration branch. The source tag and Maven Central artifacts are not published yet. Confirm availability in Central Portal before upgrading production dependencies.

Scheduler recovery

  • A failed cursor advance, Outbox write, or local dispatch invalidates the TimingIndex.
  • The next tick reloads durable state without waiting for configuration changes, shard movement, or a restart.
  • Revision checks run on an independent interval, defaulting to PT1S, instead of every 500ms idle wake-up.
  • A dedicated reloadRequired state bypasses revision throttling for failure recovery.

Worker backpressure and FORBID

  • Local handlers retain virtual threads with non-blocking admission, capped at 256 in-flight tasks by default.
  • Saturated submissions are rejected immediately and return to the existing Dispatch Outbox retry path.
  • FORBID uses an atomic CAS claim so concurrent submissions cannot pass together.
  • Persistence failures, executor rejection, and handler errors release the running count before completion is signaled.
  • Worker shutdown waits 30 seconds by default before interrupting remaining work.

Cluster and database

  • ShardManager.renewAll adds a batched lease-renewal boundary.
  • JDBC renewal uses one connection, one database timestamp, and one executeBatch per reconciliation round.
  • Owner, fencing-token, and lease-expiry checks remain unchanged.
  • Nodes outside DRAINING skip periodic shard, Outbox, and execution-target aggregates.

HTTP and observability

ServiceWorkersQueue capacity
Admin HTTP32256
Prometheus HTTP864
Internal Gateway forwarding32256

Prometheus reuses Outbox and Execution status snapshots within one scrape and adds:

  • firefly_local_worker_active
  • firefly_local_worker_max_concurrency
  • firefly_local_worker_rejections_total

New configuration

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

The corresponding environment variables are FIREFLY_WORKER_MAX_CONCURRENCY, FIREFLY_WORKER_SHUTDOWN_TIMEOUT, and FIREFLY_SCHEDULER_CONFIGURATION_REFRESH_INTERVAL.

Compatibility

  • No database schema migration.
  • No Netty/Executor protocol change.
  • No Admin API request or response format change.
  • Under saturation, local work enters Outbox retry earlier instead of creating virtual threads without a limit.

Verification

  • Recovery after a first repository-advance failure.
  • Independent revision refresh under frequent scheduler ticks.
  • Exactly one accepted execution across 16 concurrent FORBID submissions.
  • Re-admission after initial execution persistence failure.
  • Focused coverage for admission saturation, JDBC batch renewal, and new metrics.
  • The full gradle test --no-daemon suite passes.

Released under the Apache-2.0 License.