Skip to content

Release v19.12.0

Choose a tag to compare

@github-actions github-actions released this 27 Sep 07:47
be659fa

This PR consolidates six fixes into one release. Each was reviewed separately, then tested together on top of v19.11.0.

Added

  • The .NET client's generated JSON schemas give inline object types a title with the type name. A declaration generated from a fluent composite-key projection (for example in the Workbench) can then name the key type and recompile. The fluent CompositeKeyBuilder still emits untyped expressions, so older kernels are unaffected (#4253)
  • The ASP.NET Core causation middleware records the matched route template in a new routeTemplate causation property, alongside the existing request path (#4260)

Changed

  • Pattern mining derives request features from route templates only, never from raw request paths, so identifiers embedded in a URL (such as /customers/jane@example.com) are no longer stored in mined patterns. Patterns stored before this release are not rewritten (#4260)
  • Registering an event type whose stored schema differs only in titles no longer rewrites the stored schema, and no longer invalidates caches on every reconnect. This matters when old and new clients run side by side (#4253)

Fixed

  • A MongoDB bulk write that fails part way now applies the remaining operations instead of silently dropping them. Later changes for the partition that failed are held back, so they can't overtake its replay. Each failed partition is reported once, at its earliest sequence number (#4244)
  • Forwarding events to another event store's inbox no longer acknowledges events whose append failed. It stops at the first failure and reports the last event it actually forwarded, so the retry resumes from the failed event (#4259)
  • Projection keys for immediate (passive) projections round-trip read-model keys that contain # (#4241)
  • add and subtract projection mappings accept negative, decimal and exponent operands (for example -1, -2.5, 1e-3), and reject malformed operands. Exponent literals and integer literals beyond 2^53 in declarations still depend on the declaration parser (Cratis/Screenplay#285) (#4239)
  • Composite-key validation for generated declarations resolves the key type from the read model's Id schema first, so a same-named type elsewhere in the read model can't be picked by mistake (#4253)