Repository navigation
This is a minor release on JasperFx 2.100.1, Weasel 9.49.0, Marten 9.58.0, Polecat 5.49.0 and Fisher 1.28.0. Upgrading is a package bump: there is no schema change and no breaking API change. If your projects pin JasperFx.Events.SourceGenerator centrally, pin it to the same version as JasperFx.Events (see the note at the end).
New
- Sagas:
[SagaIsResponseOnly]for an endpoint that returns a saga as its response (GH-5069). - PostgreSQL:
PublishOnlyToShardedPostgresqlQueues, for publishing to sharded queues with no listeners (GH-5088). - EF Core: the transactional middleware's isolation level is configurable (GH-5207).
- Azure Service Bus: support for externally owned topics (GH-5342).
- HTTP:
- a ProblemDetails factory for the 409 conflict mapping (GH-5353);
- an
AggregateExceptionof concurrency failures maps to 409 (GH-5355); - OpenAPI describes query, header and form parameters with their data annotations;
[DeduplicatedWithResponse]replays ASP.NET CoreIResultresponses, and reads a replayedLocationwithout per-request reflection (GH-5381).
- Kafka: the replay group id can be set, with a
kafka-replay --group-idoption (thanks to new contributor @Mr444-dev). - Testing:
WhenTrackedsees events an application commits through its own injectedIDocumentSession, on Marten, Polecat and Fisher (GH-5385, GH-5390);GenerationRules.ReuseCompiledAssemblies(JasperFx 2.100.0) is documented and tested for many hosts in one process, in Dynamic and Auto modes, the codegen command and HTTP chains (GH-5378, GH-5391).
- Event Model:
EventModelReportprints the decider line beside starts (GH-5379), andscaffoldturns a multi-event automation into one handler class (GH-5361).
Fixes
- Local queues: buffered and durable local queues whose receiving block faulted are rebuilt (GH-5358), and
DurableLocalQueue.StartAsyncskips an already accepting queue and is serialized (GH-5348). - Inbox recovery into an inline endpoint with
ListenerCount > 1no longer recurses forever (GH-5363). - Middleware: an
OnExceptionreturning a tuple generates code that compiles (GH-5356), andOnExceptionhandlers for the same exception type merge into one catch clause. - CloudEvents:
CloudEventsMapperkeeps the envelope id on re-read, with a stable id for non-Guid CloudEvent ids (GH-5364). - PostgreSQL: the scheduled-message poll gets the index SQL Server already had (GH-5346).
- Scaffold no longer plans every emitted event as an
Applyon every stream (GH-5360, a partial fix; the rest stays open). - Build: NU1903 (GHSA-p3jp-9v83-76w9) on
Microsoft.DotNet.ILCompileris cleared (GH-5387).
Pinning JasperFx centrally
Polecat 5.49.0 needs JasperFx 2.100.1. If JasperFx.Events is lifted to 2.100.1 while JasperFx.Events.SourceGenerator stays pinned at 2.100.0, the generator emits nothing and projections fail at run time with "No source-generated dispatcher found". Keep the two on one version (#1138).
What's Changed
- GH-5069 [SagaIsResponseOnly] for endpoints returning a saga as the response by @jeremydmiller in #5366
- GH-5088 PublishOnlyToShardedPostgresqlQueues (no listeners) by @jeremydmiller in #5367
- GH-5207 EF Core transactional middleware: configurable isolation level by @jeremydmiller in #5369
- GH-5342 Azure Service Bus: support externally owned topics by @jeremydmiller in #5368
- GH-5353 ProblemDetails factory for the 409 conflict mapping by @jeremydmiller in #5370
- feat(kafka): allow setting replay group id by @Mr444-dev in #5343
- GH-5346 PostgreSQL scheduled-message poll gets the index SQL Server has by @uniquelau in #5347
- GH-5348 DurableLocalQueue.StartAsync skips an accepting queue and is serialized by @uniquelau in #5349
- docs: circuit breakers and error policies in tests by @uniquelau in #5350
- Describe query parameters with their data annotations in OpenAPI by @esond in #5351
- [DeduplicatedWithResponse] replays ASP.NET Core IResult responses by @esond in #5352
- Merge OnException handlers for the same exception type into one catch clause by @esond in #5357
- Follow-ups: Kafka replay GroupId docs + kafka-replay --group-id (#5306), same-type OnException docs (#5357) by @jeremydmiller in #5380
- GH-5364 CloudEventsMapper keeps envelope id on re-read; stable id for non-Guid CloudEvent ids by @jeremydmiller in #5377
- GH-5361 scaffold: multi-event automation becomes one handler class by @jeremydmiller in #5375
- GH-5360 scaffold: don't plan every emitted event as an Apply on every stream by @jeremydmiller in #5374
- Describe header and form parameters with their data annotations in OpenAPI by @jeremydmiller in #5371
- GH-5356 middleware OnException returning a tuple generates uncompilable code by @jeremydmiller in #5373
- GH-5358 Rebuild buffered and durable local queues whose receiving block faulted (supersedes #5359) by @jeremydmiller in #5382
- GH-5355 map an AggregateException of concurrency failures to 409 by @jeremydmiller in #5372
- GH-5363 Inbox recovery into inline endpoint with ListenerCount > 1 recurses forever by @jeremydmiller in #5376
- GH-5379 EventModelReport: print the decider line beside starts by @jeremydmiller in #5383
- GH-5387 Clear NU1903 on Microsoft.DotNet.ILCompiler by @jeremydmiller in #5388
- GH-5385 WhenTracked sees events committed through an application-owned IDocumentSession by @jeremydmiller in #5386
- GH-5378 Document and test ReuseCompiledAssemblies (JasperFx 2.100.0) by @jeremydmiller in #5384
- GH-5381 Read a deduplicated IResult's Location without per-request reflection by @jeremydmiller in #5389
- GH-5391 Test ReuseCompiledAssemblies in Auto mode, codegen command and HTTP chains by @jeremydmiller in #5392
- GH-5390 WhenTracked sees events committed through an injected session on Polecat and Fisher by @jeremydmiller in #5393
- Release WolverineFx 6.62.0 by @jeremydmiller in #5394
New Contributors
- @Mr444-dev made their first contribution in #5343
Full Changelog: V6.61.0...V6.62.0