Skip to content

Release v7.16.7

Latest

Choose a tag to compare

@github-actions github-actions released this 30 Jul 20:25
15412b7

Summary

Observable queries backed by an in-memory store silently returned nothing. The wrappers in Cratis.Reactive subscribed the source into a plain Subject before any consumer could attach, so a source that emits while it is being subscribed — a BehaviorSubject seed, a ReplaySubject buffer, anything reading in-memory state — pushed its value into a subject with no observers, and it was lost for good. Sources whose first value arrives asynchronously (a database round-trip) were unaffected, which is why this only ever surfaced against in-memory backing stores.

Fixed

  • Observable queries no longer lose the value their source emits synchronously on subscribe. InvokeAndWrapWithSubject, InvokeAndWrapWithTransformSubject, and TransformingSubject now buffer the most recent value, so the consumer that subscribes after wrapping still receives the current state.
  • The source subscription is now disposed when the wrapping subject completes, instead of leaking for the lifetime of the source.

Changed

  • Subjects returned by InvokeAndWrapWithSubject and InvokeAndWrapWithTransformSubject, and TransformingSubject itself, replay their most recent value to new subscribers. A subscriber attaching after a value has been produced now sees the current state rather than waiting for the next change.