Skip to content

Release v16.13.1

Latest

Choose a tag to compare

@github-actions github-actions released this 31 Jul 05:33
4119f73

Summary

Running a kernel with in-memory storage — what the Cratis Stage sandbox does — left the Workbench blank: no event stores on the front page, and no event types inside one. Three separate defects, all on the in-memory path.

The first observer of the event stores got data; every one after it got nothing, permanently. ObserveEventStores handed every caller the same process-wide subject, and callers complete the subject they are given when their connection goes away (ObservableExtensions.CompletedBy registers exactly that on the cancellation token), so the first client to disconnect completed it for the whole process. Separately, the in-memory event type storage recorded registrations but answered every read as though none existed. Both are now consistent with what the MongoDB implementation has always done.

Fixed

  • The Workbench lists event stores against in-memory and SQL storage. Each caller observing event stores now gets its own subject, so one client disconnecting no longer ends event store observation for every other client in the process.
  • The Workbench lists event types against in-memory storage. Registered event types are now read back — GetLatestForAllEventTypes, GetFor and GetAllGenerationsForEventType returned an empty sequence regardless of what had been registered, and ObserveLatestForAllEventTypes returned a subject that was never fed. An event type nobody registered still resolves to an empty schema, so unknown event content is preserved as before.
  • Observable queries no longer lose the first value when their source emits it synchronously on subscribe, via Cratis.Fundamentals 7.16.7. Every observable query backed by in-memory storage produced its first value that way.