Repository navigation
Release v19.111.0
Summary
Faster projection replays, composite-key fixes for read models stored in SQL, more reliable observers during restarts and catch-up, and an xUnit v3 variant of the integration-testing package.
Added
Cratis.Chronicle.XUnit.Integration.v3, a variant of the integration-testing package for xUnit v3 and Cratis Specifications 5. The existingCratis.Chronicle.XUnit.Integrationpackage stays on xUnit v2.- A materialization binding catalog for MongoDB and in-memory storage that records, per read model, which generation is served and under which serving epoch. Publishing a new generation is one conditional, idempotent operation that revokes the previous generation's write fence, and generation numbers are never reused. SQL storage refuses the catalog explicitly. (part of #5159)
- Kernels support structured composite-key read-model lookups with explicit legacy-key ambiguity detection. (part of #4265)
Changed
- Dropping, renaming or clearing a read model collection that a projection generation owns is refused. (part of #5159)
- SQLite read models now store an order-preserving key next to each decimal property, so paging, indexes and exact lookups on decimal values follow numeric order instead of text order, while values still round-trip with every significant digit. (#5200)
- Projection replay batches parent history reads per page while preserving the parent state applicable to each child event. (#5328)
- Projection replay batches MongoDB sink-document reads per page while preserving position-bounded parent resolution. (#5317)
Fixed
- A replay triggered by a projection definition change now runs with the new definition, so history for added events (for example a child collection added back) reaches the read model. (#5071)
- Clients and kernels built without a release version (for example from a CI or local build) no longer get refused on connect for purely additive contract differences; when either side's version is unknown, the connection is accepted if the two contracts are compatible in either direction. (part of #5353)
- Read models with composite keys stored in SQL databases now return their key when read through
IReadModels, instead ofnull. (#4719) Cratis.Chronicle.Aspirerestores on .NET 8 and .NET 9 without package downgrade errors. (#5358)