Skip to content

Roadmap

Unordered list of planned and potential features. Open an issue if something here is important to you.

Completed

  • Pluggable backendsKronosStore interface decouples the scheduler from MongoDB/Redis. Swap backends without changing application code.
  • kronos-mongo adapter — MongoDB + any CacheClient (Redis, SQLite, in-memory).
  • kronos-exposed adapter — PostgreSQL / SQLite / H2 via Exposed ORM + any CacheClient.
  • Conditional distributed lockacquireLock now atomically increments only when locks == 0, eliminating the TOCTOU gap.
  • Optimized queries — Indexed, filtered fetch replaces full collection scans.
  • Retry ordering fixonFail is correctly called after all retries are exhausted, not before.
  • acquireLock null-safety — Lock failure aborts execution cleanly (?: return@let).

Planned

  • Backoff retry — Configurable fixed or exponential delay between retry attempts. Currently retries fire in a tight loop with no delay.
  • SQL locking fixExposedKronosStore.acquireLock should return null when the conditional UPDATE affects 0 rows, matching the MongoDB backend's behaviour and making the SQL backend safe under concurrent execution.
  • InMemoryKronosStore — No-database store for unit tests; eliminates Testcontainers dependency for scheduler logic tests.
  • Kronos Service — Standalone Docker image that exposes Kronos over a REST API, enabling non-JVM languages to use Kronos without embedding the library. Clients register jobs and receive execution callbacks via HTTP webhooks. Official SDKs planned for Python, Node.js, Go, and Ruby.
  • KronoWatch — Commercial SaaS for monitoring and managing Kronos jobs. Visualise job history, configure failure alerts, and manage schedules across services. Separate product from the open-source library and Docker service.

Comments