Skip to content

Release v16.24.0

Choose a tag to compare

@github-actions github-actions released this 11 Aug 14:13
1207347

Summary

Reading a read model instance no longer depends on which kind of observer builds it. When a read model is materialized — the default for both projections and reducers — Chronicle now serves it from the sink and releases its PII before it leaves the kernel. Only a passive read model, which has no sink, is still computed on demand from its events.

Previously only projections read the sink. A reducer-backed read model was folded from its whole event stream on every read, and GetInstances replayed the entire log even for a read model whose state was already stored.

Changed

  • IReadModels.GetInstanceById resolves a materialized reducer-backed read model from the materialized store instead of replaying its events, with PII released server-side (#3605)
  • IReadModels.GetInstances returns the stored instances for a materialized read model instead of replaying the event log; passing an explicit event count still replays (#3605)
  • A reducer-backed read model no longer needs a connected reducer client to be read by key (#3605)
  • Read model instance reads are eventually consistent unless the read model is marked [Passive] — mark it passive where a read must reflect an append that just happened (#3605)

Fixed

  • PII is now released on the non-generic IReadModels.GetInstanceById(Type, ...) for reducer-backed read models, which is how reactors resolve read model parameters — it previously returned encrypted values (#3605)
  • A read model instance request for a reducer-backed read model is made against the event sequence that reducer reduces from, rather than always the event log (#3605)