Repository navigation
Release v19.69.0
The kernel can now record application occurrences durably, hand them to workers under fenced leases, and settle each effect through an atomic receipt, so a redelivered occurrence does not repeat its Chronicle effects. Client support follows in a later release.
Added
- Kernel occurrence queue: triggers register with a JSON payload schema,
RecordOccurrencestores each occurrence once per idempotency id (Recorded,AlreadyRecorded,OccurrenceIdConflict,OccurrencePayloadInvalid), and workers claim, renew, complete and fail occurrences under leases fenced by an epoch. A superseded worker getsOccurrenceLeaseLost; a repeated completion getsAlreadyCompleted. (part of #4911) - Failed occurrences back off and are quarantined after the configured maximum attempts without blocking later occurrences;
RetryQuarantinedOccurrencere-arms one and records the authenticated principal. Retry settings live in the newOccurrencesconfiguration section, documented at https://github.com/Cratis/Chronicle/blob/main/Documentation/configuration/chronicle-options.mdx. (part of #4911) - A disconnected client's leases expire, and occurrence queues resume after a kernel restart.
GetOccurrenceandObserveOccurrencesreport state, attempts, lease, last error, next attempt and the receipts written for an occurrence, with their namespace. (part of #4911) - Effect receipts: every append command (
Append,AppendMany,AppendManyForEventSourcesand their named-tag variants) accepts an optional effect receipt that is written in the same storage transaction as the events. A repeated effect returnsEffectAlreadyRecordedwith the stored outcome and response and appends nothing. A zero-event append with concurrency scopes records aNoEventsreceipt only when the scopes hold.RecordEffectReceiptrecords aNoEventsorRefusedoutcome on its own, andGetEffectReceiptreads one back. An unknown commit result is settled by lookup, or fails retryably withEffectReceiptUnsettled. See https://github.com/Cratis/Chronicle/blob/main/Documentation/concepts/effect-receipts.md. (part of #4911) - The kernel advertises the
occurrencesandeffect-receiptscapabilities, and the newOccurrencesgRPC service is part of the generated Kotlin, TypeScript and Elixir contracts. (part of #4911)
Changed
- SQL stores get additive event-store and namespace migrations for trigger definitions and indexed effect receipts. (part of #4911)