Skip to content

Release v20.62.2

Choose a tag to compare

@github-actions github-actions released this 24 Jul 11:03
da7ab7d

Fixed

  • Header-based tenant resolution now applies for the whole request instead of only inside endpoint delegates, so tenant-scoped work that runs earlier no longer falls back to the default namespace and database; header lookup is now case-insensitive so a configured header still matches when HTTP/2 delivers it lowercased (#2351)
  • An IAsyncEnumerable-backed observable query is now stopped on unsubscribe, instead of leaking and duplicating results on re-subscribe
  • Observable queries served through the MongoDB watcher are now isolated per tenant database instead of all sharing the first tenant's
  • The MongoDB watcher now resumes from the last change after a transient reconnect instead of silently dropping changes that happened during the disconnect
  • A float-backed concept can now be persisted to MongoDB — it previously threw on every write
  • A DateTime-backed concept now round-trips correctly instead of being read back as a wildly wrong date
  • A command that returns an event collection containing a null element no longer fails with a server error during response detection
  • Injecting an aggregate root into a command's Handle now resolves the aggregate root itself rather than a Task
  • Executing a command with a base-type or interface result type now returns the result instead of throwing when the response is assignable to it
  • An exception thrown by an aggregate root event handler now surfaces as itself, instead of being wrapped in a reflection exception that hid its type and stack
  • An aggregate root commit result now reports only that aggregate's own events, with sequence numbers that correspond to them
  • A command, query, or read model that references an enum not backed by int (for example enum X : byte or [Flags] enum X : long) no longer breaks TypeScript proxy generation
  • A Uri property now generates a TypeScript string instead of a Date
  • A dictionary whose key or value is a package type such as Guid or TimeSpan now generates compilable TypeScript, with the type's import included
  • Command and query validation no longer relies on Expression.Compile, Activator.CreateInstance over a runtime-constructed generic, or private-member reflection, so it works under NativeAOT and trimming (#2204)