Skip to content

Release v20.59.0

Choose a tag to compare

@github-actions github-actions released this 18 Jul 19:26
08f4d54

Fixed

  • A command that receives a wrong-typed value for a Guid-, number-, or enum-backed concept property now returns 400 Bad Request instead of 500.
  • Omitting a required (non-nullable) concept from a command now returns 400 Bad Request identifying the field, instead of 500.
  • A command that depends on a must-exist read model which does not exist for its identifier now returns 400 Bad Request instead of a 500 that revealed the read model type.
  • A query filter that throws no longer crashes the whole query into a 500, and a denied query can no longer be turned into a 500 by a later filter.
  • Out-of-range or hostile paging on an observable query no longer overflows into a server error.

Changed

  • Query filters now short-circuit on the first blocking verdict, and authorization filters run before other query filters, so an unauthorized-and-invalid query consistently returns 403 Forbidden.
  • An observable query that has not yet produced its first result is now reported as not ready (202 Accepted, no exception, new isReady flag on the query result) rather than an error-shaped result, so callers no longer read a pending query as a crash.
  • Behavior change: a command carrying a non-nullable concept property that arrives null is now rejected with 400 Bad Request. Previously such a command could succeed if its handler never dereferenced the value. Declare the concept nullable (Concept?) to keep it optional; the event source key is exempt.

Added

  • IAuthorizationQueryFilter for marking a query filter to be evaluated before other query filters.