Skip to content

Release v22.95.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 06:57
9b77946

Commands that append to an identifier they generated are now protected against writing into an event source that already has events.

Added

  • When a command appends to an event source whose id was generated by a [GeneratedValue] parameter in the same invocation, the append requires the whole event source to be empty. If it already has events, the command fails with ConcurrencyViolation and ReasonDetail GeneratedIdentifierCollision, and Handle() is not run again. This covers returned events (including EventForEventSourceId, (id, event) tuples and EventsWithConcurrencyScopes) and aggregates. See Fresh identifiers. (#3129)
  • [GeneratedValue(Freshness = GeneratedValueFreshness.Unguarded)] opts a generated value out of the guard. (#3129)

Changed

  • A command that supplies an explicit BeforeFirst scope for a generated target keeps working. A conflicting explicit scope for that target is rejected with ConflictingConcurrencyScopes before anything is appended. (#3129)
  • Arc requires Cratis Chronicle 19.59.4 or later. (#3129)