Roadmap
Unordered list of planned and potential features. Open an issue if something here is important to you.
Completed
- Pluggable backends —
KronosStoreinterface decouples the scheduler from MongoDB/Redis. Swap backends without changing application code. kronos-mongoadapter — MongoDB + anyCacheClient(Redis, SQLite, in-memory).kronos-exposedadapter — PostgreSQL / SQLite / H2 via Exposed ORM + anyCacheClient.- Conditional distributed lock —
acquireLocknow atomically increments only whenlocks == 0, eliminating the TOCTOU gap. - Optimized queries — Indexed, filtered fetch replaces full collection scans.
- Retry ordering fix —
onFailis 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 fix —
ExposedKronosStore.acquireLockshould returnnullwhen 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.