Skip to content

CedroDB 0.5.0 — Persistent jobs and fenced atomic results

Pre-release
Pre-release

Choose a tag to compare

@uppy19d0 uppy19d0 released this 15 Oct 05:10

CedroDB 0.5.0 brings persistent local jobs to the same Rust database used for documents, guarded inventory changes, outbox events and backups.

  • Stable job IDs deduplicate insertion, including completed/dead jobs.
  • Delayed availability, priorities and deterministic claim ordering.
  • Durable leases, renewed expiration and stale/expired token rejection.
  • Retry delays, bounded attempts, expired-job recovery and explicit dead-job redrive.
  • An acknowledgement can atomically complete the job and save generated business documents/outbox events in one transaction.
  • Shared safe-number job payloads across Rust, Node.js and Python; typed Job/LeasedJob APIs.
  • Reserved internal mutation namespaces, strict queue record validation and atomic capacity failures without consuming an attempt.
  • Executable worker recipes, real recorded recovery/inventory/queue scenarios, updated package READMEs and a gated roadmap toward 1.0.

Validation: 75 Rust tests, 43 Node tests and 49 Python tests (167 total), four native build targets, numeric/storage interoperability, standalone Python source rebuilds, strict TypeScript declarations and independent atomicity/fencing/backup review. The exact six public SDK recipes also execute successfully. Release artifacts retain their CI SHA-256 hashes.

Experimental pre-1.0. One handle/process owns the database; data stays in RAM and queue scans are O(n). Completed/dead jobs and history have no automatic retention. Applications own workers, clocks, periodic expired-job recovery and external-effect idempotency. Tokens fence one history, not diverged restored copies. Leave headroom for lease/error metadata; capacity errors roll back the transition. No production readiness or performance superiority claim is made.

Migration: log and backup formats are unchanged. _cedro.jobs. becomes a reserved prefix for generic writes; migrate ordinary collections using that prefix with 0.4 before upgrading. See docs/jobs.md, docs/migrations.md and docs/roadmap.md.