chore: Bump WolverineFx.FluentValidation from 5.39.5 to 6.21.0#483
Closed
dependabot[bot] wants to merge 1 commit into
Closed
chore: Bump WolverineFx.FluentValidation from 5.39.5 to 6.21.0#483dependabot[bot] wants to merge 1 commit into
dependabot[bot] wants to merge 1 commit into
Conversation
--- updated-dependencies: - dependency-name: WolverineFx.FluentValidation dependency-version: 6.19.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
dependabot
Bot
force-pushed
the
dependabot/nuget/Nexus.Api/WolverineFx.FluentValidation-6.19.0
branch
from
July 16, 2026 09:28
4738c0c to
b4fbe9b
Compare
Contributor
Author
|
Looks like WolverineFx.FluentValidation is updatable in another way, so this is no longer needed. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updated WolverineFx.FluentValidation from 5.39.5 to 6.21.0.
Release notes
Sourced from WolverineFx.FluentValidation's releases.
6.21.0
Wolverine 6.21.0 is a big one: conjoined multi-tenancy for EF Core, and a measured messaging-performance wave across Kafka and RabbitMQ.
Conjoined multi-tenancy for EF Core (#3465)
Mark an EF Core entity with
ITenanted(the marker shared critter-stack-wide fromJasperFx.MultiTenancy) and register yourDbContextwithAddDbContextWithWolverineManagedConjoinedTenancy<T>(), and Wolverine gives you what Marten users have had for years: a mappedtenant_idcolumn, a tenant-bound global query filter you can't forget, stamp-on-insert,CrossTenantWriteExceptionon cross-tenant writes, conjoined sagas, opt-in Weasel-managed physical tenant partitioning (PostgreSQL list partitions + SQL Server tenant-ordinal), and an authoritativewolverine_tenantsregistry that doubles as a dynamic tenant source and feeds CritterWatch tenant management. The behavior is checked against a port of Marten's conjoined-tenancy compliance battery. See the newConjoinedMultiTenantedEfCoresample app and docs.Messaging performance (GH-3490 / GH-3492)
A client-reported "Wolverine-over-Kafka is 3-12x slower than native" investigation turned into a measured optimization wave (methodology, rigs, and full ledgers are in the repo):
(100, 250ms)settings measured 5.8 seconds publish-to-consume p50; it now measures 136ms, bounded by the timeout. Affects every transport that sends through the batched sender (RabbitMQ routes were unaffected — they don't).MaximumMessagesToReceivelistener knob on both (default 100;1restores strict message-at-a-time persistence).Envelope[]arrival path now applies the same per-envelope guards as single-message arrival (interop serializer unwrap, dead-lettering of unidentifiable messages, expiry, drain latching), and batched inbox writes route to ancillary message stores correctly.SendMessageBatchper-entry failures (throttling, oversize) are now routed to Wolverine's retry machinery instead of being silently dropped — a silent message-loss fix (GH-3493).BufferedInMemory()/ListenerCount()with measured numbers, and a matching page exists for Kafka.Behavior changes to note
Debug(wasInformation) — restore withopts.Policies.MessageSuccessLogLevel(LogLevel.Information).wolverine-execution-timeis now a floating-point histogram and no longer silently drops sub-millisecond executions (same name/unit; the point type changes).Transports and messaging
PrefetchCounton listeners and transport defaults (GH-3471)DelaySecondsfor short scheduled sends on standard queues (GH-3472)DeliverAt(GH-3470)HTTP / gRPC
IAsyncEnumerable<TRequest> -> Task<TResponse>handler shape (#3500)StreamAsync<TRequest, TResponse>overload (#3459)Dependencies
JasperFx 2.30.1 (sender-batching max-age fix), Weasel 9.18.1, Marten 9.16.1.
6.20.0
Wolverine 6.20.0
Dependency upgrades (critter stack)
Multi-tenancy & connection footprint
nodes × databases. Plus daemon tracker-subscription leak hygiene.IntegrateWithWolverine()now honors a database-per-tenant Polecat store and readsMainDatabaseConnectionString.DatabaseDescriptor.Portinstead of re-parsing (jasperfx#514).CritterWatch / connection state
Kafka
SentAtand expose record headers on raw-JSON listeners (GH-3407).JsonSerializerOptionson raw-JSON endpoints now actually applies;PublishRawJsonmapper registration fixed.Sagas
SagaConcurrencyExceptionnow inheritsJasperFx.ConcurrencyException(GH-3444) — existingOnException<ConcurrencyException>()policies now catch saga concurrency failures.Other
TrackedSessionnot-tracked vs not-routed fix (#3435).6.19.0
CosmosDB
CosmosDbConfiguration.PartitionSagasById(): opt-in, saga id becomes the document partition key (GH-3415) @mysticmindCosmosClientwhose serializer would drop a saga'sidat host start; document the camelCase requirement (GH-3416) @mysticmindHTTP / OpenAPI
uuidinstead of falling back tostring(GH-3420) @mysticmindDurability / persistence
IWolverineObserver.ConnectionBudget(GH-3397) @jeremydmillerTest infrastructure only
IntegrationContextfrom disposing a class fixture it doesn't own; pinApplicationAssemblyin the CoreTests harness (GH-3423) @jeremydmillerusing_dynamic_multi_tenancyfrom poisoning its own next run @mysticmindMilestone: https://github.com/JasperFx/wolverine/issues?q=is%3Aissue%20state%3Aclosed%20milestone%3A6.19.0
Full Changelog: JasperFx/wolverine@V6.18.0...V6.19.0
6.18.0
Wolverine 6.18.0
A security-relevant serialization fix, a startup-fatal codegen fix, a silently-dead-listener fix in RabbitMQ, the first F# saga codegen support of any persistence provider, and the CI split that makes "merge when green" mean something again.
If you use MassTransit interop over a durable listener, take this release. See the first section.
#3408 — fixed in #3411
EnvelopeSerializerwrote the typed envelope properties to the wire format and then appended everyEnvelope.Headersentry verbatim, with no reserved-key filter — and the appended entries came last. Because the reader parses reserved keys straight back into typed properties, aHeadersentry under a reserved key silently overwrote the real property on the next read.A value in
envelope.Headers["tenant-id"]is inert while the envelope is in memory. It stops being inert the moment the envelope crosses the serializer — any durable listener, the inbox/outbox, or the scheduled-message store:tenant-idintoenvelope.Headers.env.TenantIdis set from it.saga-idreaches another saga's state, andidrewritesEnvelope.Id— the inbox's dedupe identity.This was live, not theoretical.
MassTransitEnvelope.TransferDataalready copies every incoming MassTransit header intoenvelope.Headersunfiltered (and by assignment, notTryAdd). Any Wolverine app doing MassTransit interop over a durable listener has had this path open. If that describes you, this release is the one to take.The fix filters reserved keys on the write side, so the typed property stays authoritative and a reserved key sitting in
Headersbecomes a no-op.causation-idis deliberately not filtered —DeliveryOptionsintentionally carries it as a loose header forWolverine.Marten'sOutboxedSessionFactory, and it is never promoted by the reader.Startup-fatal codegen fix
#3399 — fixed in #3406 — invalid generated class name for batched (array) message types. This one prevents the application from starting.
Fixes
DaemonMode.Solo/HotColddaemon alongside managed distribution is now an actionable startup exception instead of two schedulers quietly fighting over the same shards.IAgentRuntime.ApplyRestrictionsAsyncpersisted the restriction and then never dispatched the commands it computed, so pausing an agent had no immediate effect. Reported by @erdtsieck against a live cluster.Internalstatus. It now returns an actionable diagnostic telling you to put the saga identity on the request DTO.[AsParameters]now rejects unparseable values in collection query parameters, closing the gap left by the scalar fix in #3372.IEventStorebridge registered twice, soGetServices<IEventStore>()returned the same store instance two times and anything iterating it double-counted. Polecat's ownAddPolecat()had started registeringIEventStoreand Wolverine was still bridging it as well.State = Connected— a silently dead listener. The listener now defers toReconnectedAsync(), which re-declares and re-consumes. Also pins theConnectionMonitortracking invariant that #3370 fixed but nothing guarded.OpenAPI
#3380 (#3418) — OpenAPI parameters are now derived from the full binding chain rather than the handler signature alone. Two real defects closed:
After/Finallypostprocessor were omitted from the operation entirely.string) whenever the description was assembled before those frames resolved — which is exactly the build-time OpenAPI /openapiCLI path, because ASP.NET caches the first ApiExplorer read.More importantly, this ships the OpenAPI shape-test harness that was missing. Adding a shape assertion is now one endpoint plus one
[Fact], which is why this class of omission kept shipping unnoticed.New: Azure Service Bus emulator support
#3366 (#3409) — the docs told you to call
UseAzureServiceBusTesting(), which only ever existed in Wolverine's own test suite. It is now a real, shipping API:... (truncated)
6.17.3
Bug-fix and scale release, following the 6.17.2 community sweep. Every item below came from a community report or a review finding — thank you all.
Closed issues
PeriodicTimer, so at high database counts the metrics polling itself became significant connection pressure. Agents now register their store with a node-wide sequential sweeper that walks the node's databases one at a time across theUpdateMetricsPeriodwindow — at most one metrics connection in flight per node, regardless of database count. The registration set is re-read every pass, so databases join and leave the sweep as agents start and stop without a restart.Disconnectedstate that #3187 fixed. Two follow-ups are tracked in #3391.TrackedSessionwould pick up and then sit waiting on messages the test never sent. The default ignore rule now covers all ofINotToBeRouted(agent commands and framework telemetry), with a deliberate carve-out forAcknowledgement/FailureAcknowledgement, which the session's own acknowledgement APIs depend on. If you are on an older version,IgnoreMessagesMatchingType(t => t.CanBeCastTo<INotToBeRouted>())is the workaround.Fixes from review
UpdateMetricsPeriod = TimeSpan.Zerowould hot-spin the sweep loop (the pre-#3384PeriodicTimerthrew); it is now rejected at configuration time, withDurabilityMetricsEnabled = falseas the way to turn polling off.Marten test-helper:
PauseThenCatchUpOnMartenDaemonActivity#3388 — cold first catch-up appeared to stall (PR #3394, reported by @uniquelau). Investigated in depth. The reported mechanism — that
coordinator.ResumeAsync()does not start never-started shards — does not hold: under Wolverine-managed distribution the coordinator isWolverineProjectionCoordinator, whoseResumeAsyncbuilds the daemon lazily and starts every shard, bypassing agent assignment entirely. The cold path works, and there are now four tests proving it (including with a second subscription-agent consumer sharing the agent family).The real defect was a timeout mismatch, and it explains the reported symptom exactly. The stage runs inside a child
TrackedSessionwhose token cancels atTrackedSession.Timeout— 5 seconds by default — while the catch-up ignored that token and waited on an internal 60-second budget. The session gave up first and left the catch-up envelope started-but-never-finished, which reads as a hang. This is a genuine 6.16 → 6.17 behavior change: the old activeForceAllfinished inside 5 seconds; resume-and-wait on a cold daemon or a busy machine does not. The catch-up now honors the session's token and raises an actionableTimeoutExceptionnaming the store and pointing atTrackActivity().Timeout(...).If you hit this on 6.17.0–6.17.2, raising the tracked-session timeout is the fix.
Docs
IMessageBus.InvokeAsync<T>and the chain that runs is the handler's. The header-identified gap is tracked as #3385, with a clear diagnostic planned.Timeout()bounds the whole session including its stages, so a slow stage likePauseThenCatchUpOnMartenDaemonActivity()is capped by the session's 5-second default, not by any budget internal to the stage.Full changelog: JasperFx/wolverine@V6.17.2...V6.17.3
6.17.2
Community-issue sweep release. Every fix below shipped same-day from issues filed by the community — thank you all.
Closed issues
WolverineApiDescriptionProvidernow enumerates theHttpGraph(complete whenMapWolverineEndpoints()returns) instead of the start-timeEndpointDataSource, so ASP.NET's version-keyed cache can never freeze an empty first read. If you monitor Wolverine hosts with CritterWatch and expose OpenAPI, upgrade to this release (see JasperFx/CritterWatch#689).[AsParameters]+ compound-handlerLoadAsyncbinding the same route variable generated uncompilable code (CS0136/CS0841, host failed at startup) (PR #3381). Binding frames are now emitted once per chain and re-homed so any second consumer reuses them; both the[FromRoute]and[AsParameters]-parameter variants are covered. The related OpenAPI gap (route params bound only byLoadAsyncmissing from the operation) is tracked as #3380.[AsParameters]query binder silently ignored unparseable values (PR #3379). New opt-inWolverineHttpOptions.RejectUnparseableQueryValues: a present-but-unparseable query value short-circuits with a 400 ProblemDetails naming the parameter, matching ASP.NET minimal APIs; missing values keep their initializer in both modes. The default flips to strict in Wolverine 7.0.IMessageContext, plus a fullITenantDetectionPolicies-style mirror (opts.TenantId.IsRequestHeaderValue(...),IsClaimTypeNamed(...),DetectWith<T>()) that sets the codegen tenant variable Marten/Polecat session frames consume — with a zero-config default when the client stampstenant-id. New docs page: gRPC multi-tenancy.DurabilityMetricsEnabled = falseand raisingUpdateMetricsPeriodas mitigations for metrics-polling connection load at high tenant-database counts (PR #3378). The per-node sweeper implementation is in progress on the issue.Dependency bumps
6.17.1
Wolverine 6.17.1 is a bug-fix release covering EF Core outbox enlistment gaps in Wolverine.Http, persistence provider resolution, HTTP route parameter binding, multi-tenancy message store roles, and a RavenDB startup race. It also upgrades the Marten dependency to 9.14.1.
EF Core & persistence
DbContextand cascade messages only through a tuple return are now enlisted in the EF Core outbox, so cascaded messages are no longer sent before the transaction commits when usingLightweightmode (#3358, #3362)IStorageAction<T>/ storage side effects) are likewise enlisted in the EF Core outbox inLightweightmode (#3353, #3357)DbContext-based handlers get the correct transactional middleware (#3359, #3361)MessageStoreRole.Ancillaryis now honored for tenanted message stores (static tenants and master-table tenancy) instead of silently reportingMain(#3351), with the registration behavior now covered by tests across PostgreSQL, SQL Server, SQLite, MySQL, and OracleHTTP
[FromRoute(Name = "...")]is now honored on plain endpoint method parameters (previously only inside[AsParameters]types), enabling route segments like{journey-id}that aren't valid C# identifiers (#3356 — thanks to @outofrange-consulting!)RavenDB
Dependencies
Documentation
IDocumentSessionorDbContext), not the HTTP verb (#3355, #3360)6.17.0
Why is this such a big release? Because @jeremydmiller went on a 3 night vacation and the community decided to throw in issues and pull requests left and right!
A big theme was filling in the remaining gaps of "Name Broker" and "Broker per Tenant" support in every external messaging transport where it made sense to add that rather than just being Rabbit MQ, Azure Service Bus, and hit and miss everywhere else. We also added HTTP QUERY support.
What's Changed
... (truncated)
6.16.0
Lot of CritterWatch stuff, optimized SQL Server transport, new options for NServiceBus interop using SQL Server, bug fixes
What's Changed
Full Changelog: JasperFx/wolverine@V6.15.0...V6.16.0
6.15.0
Wolverine 6.15.0 aligns the critter-stack dependencies with the latest stable releases and brings observability, transport, and persistence improvements.
Dependency updates
GCP Pub/Sub
ListenOnlyAtLeader()) listeners now use a single shared subscription instead of a per-node subscription, restoring single-consumer semantics (#3258)Observability & health
BackgroundReceiveLoopwith receive-loop health reporting, adopted across SQS, Redis, PostgreSQL queue, SQL Server queue, and Kafka (#3236)EndpointHealthSnapshot;IReportConnectionStatefor NATS, MQTT, Pulsar, Redis (#3231)source(service name) (#3221); dimensional inbox/outbox/scheduled gauges (source + database); configurable millisecond histogram buckets (#3224)TagsonWolverineOptions, surfaced onServiceCapabilities(#3240)IGrpcEndpointManifest(#3235)Persistence & fixes
DbContext.Update()for untracked entities inStorage.Update(#3229)IEventStorefor Polecat stores so they're discoverable (#3219)NullMessageStorenever throws — no-ops every member for storeless observersPersistAgentRestrictionsAsyncno-ops on empty list (#3252);AssignmentGrid.ApplyRestrictionstolerates non-grid paused-agent URIsFull changelog: JasperFx/wolverine@V6.14.0...V6.15.0
6.14.0
The big ticket item is new interop options for Wolverine to/from MassTransit or NServiceBus using each's SQL Server or PostgreSQL queueing. Also quite a few Pulsar improvements. And community additions too!
What's Changed
Full Changelog: JasperFx/wolverine@V6.13.1...V6.14.0
6.13.1
Patch release on the 6.x line — a Critter Stack dependency refresh plus one targeted fix. No breaking changes.
🐛 Fixes
NULL received_at(#3165) — the dead-letter explorer could report 0 messages even when dead letters existed; the RDBMS DLQ readers now handle a nullreceived_atcolumn.⬆️ Dependencies
Full Changelog: JasperFx/wolverine@V6.13.0...V6.13.1
6.13.0
Wolverine 6.13.0 on the 6.0 line (JasperFx 2.x, net9.0/net10.0). The headline is a top-to-bottom Kafka integration re-evaluation (epic #3134) that makes the transport idiomatic and high-throughput, plus
[AsParameters]HTTP fidelity fixes and event-subscription/projection-distribution hardening. No breaking changes.🚀 Kafka integration re-evaluation (#3134)
CommitMode(#3152) —StoreThenAutoFlush(default, non-blocking idiomatic throughput),PerMessage, andCommitOffsetsAfterCount/AfterIntervalbatch modes.read_committedoffset gaps.AutoOffsetResetand ephemeral hot-tail / broadcast consume (#3155).Assign(#3156).read_committedisolation, with EOS guidance (#3157).OnException<T>().MoveToKafkaRetryTopic(...)DSL (#3160).ExtendConsumerConfigurationnow preserves parent/global consumer settings (#3151).🌐 HTTP —
[AsParameters](#3135)[FromBody]in[AsParameters]: binds null withrequired:false(#3142)[AsParameters]+[FromBody]+[WriteAggregate]codegen 500 (#3143/#3144)[AsParameters]as the idiomatic route/body split (#3145)🗄️ Event subscriptions, projections & distribution
🐛 Other fixes
Full Changelog: JasperFx/wolverine@V6.12.0...V6.13.0
6.12.0
What's Changed
Full Changelog: JasperFx/wolverine@V6.11.0...V6.12.0
6.11.0
The Polecat change was necessary for CritterWatch persistence with SQL Server. The inbox cleanup should help with very busy Wolverine systems be a bit easier on databases.
What's Changed
Full Changelog: JasperFx/wolverine@V6.10.0...V6.11.0
6.10.0
New Polecat integration for ancillary store support within Wolverine that folks doing modular monoliths will want -- and we needed in CritterWatch post haste. Also new options for configuring Redis.
What's Changed
Full Changelog: JasperFx/wolverine@V6.9.0...V6.10.0
6.9.0
This release was mostly about CritterWatch, but does have some new DLQ functionality, which was meant to complement CritterWatch. Couple bug fixes too though.
What's Changed
Full Changelog: JasperFx/wolverine@V6.8.0...V6.9.0
6.8.0
What's Changed
New Contributors
Full Changelog: JasperFx/wolverine@V6.7.0...V6.8.0
6.7.0
What's Changed
Full Changelog: JasperFx/wolverine@V6.6.0...V6.7.0
6.6.0
What's Changed
IDeadLetterInterceptor: an exception-handling seam for durable dead letters by @mysticmind in AddIDeadLetterInterceptor: an exception-handling seam for durable dead letters JasperFx/wolverine#3046Full Changelog: JasperFx/wolverine@V6.5.1...V6.6.0
6.5.1
This is a super small change for CritterWatch testing.
What's Changed
Full Changelog: JasperFx/wolverine@V6.5.0...V6.5.1
6.5.0
One new API in the Kafka support, but mostly just some bug fixes and extra test coverage for the Marten integration
What's Changed
New Contributors
Full Changelog: JasperFx/wolverine@V6.4.1...V6.5.0
6.4.1
Just hardening Wolverine against a condition that only happens (we think) in CritterWatch
What's Changed
Full Changelog: JasperFx/wolverine@V6.4.0...V6.4.1
6.4.0
This release was 100% about CritterWatch and does not impact any other functionality
What's Changed
Full Changelog: JasperFx/wolverine@V6.3.2...V6.4.0
6.3.2
What's Changed
Full Changelog: JasperFx/wolverine@V6.3.0...V6.3.2
6.3.0
The top line change here was a lot of work to make Wolverine able to pre-generate code as F# in addition to the existing C# model.
What's Changed
Full Changelog: JasperFx/wolverine@V6.2.2...V6.3.0
6.2.2
Patch release on top of 6.2.1.
🐛 Bug Fixes / Codegen
#2963 (closes #2958): EF Core transaction middleware + post-save cascade flush
The HTTP-handler codegen path under the EF Core transaction middleware + outbox cascade (GH-536) no longer fails handler compilation. Two related codegen issues addressed in this PR:
var messageContextdeclaration in the generated handler. Cherry-picked from #2959, originally authored by @kentcooper — credit preserved on commit9df45bfde. Root cause:MessageBusSourcewas returning a freshCreateMessageContextWithMaybeTenantFrameper call; once cached + always returning the concreteMessageContext, the duplicate goes away.'IMessageContext' does not contain a definition for EnqueueCascadingAsync— surfaced after the cache fix because once the source produced a concreteMessageContextVariable, the downstreamCaptureCascadingMessagesframe still declared itsMethodCalltarget astypeof(IMessageContext)and emitted a bad((IMessageContext)messageContext).EnqueueCascadingAsync(…)cast. Fixed by re-targetingCaptureCascadingMessagesto the concreteMessageContexttype — mirrors the existingFlushOutgoingMessagespattern. Latent insrc/Wolverine/Runtime/Handlers/CaptureCascadingMessages.cssince020e79013e(2022-09-16); the variable-cache fix is what flipped it from masked to visible.📦 Dependency bumps
JasperFx+JasperFx.Events+JasperFx.Events.SourceGenerator+JasperFx.SourceGenerator2.2.1 → 2.2.3JasperFx.RuntimeCompilerunchanged (own 5.x line, stays at 5.0.0)Upstream JasperFx 2.2.2 release: https://github.com/JasperFx/jasperfx/releases/tag/V2.2.2 (
Fix source-created codegen variable reuse, #392). 2.2.3 was a same-day version-bump-only re-roll.📖 Documentation
DeadLetterEnvelopeGetRequest/DeadLetterEnvelopeResults/DeadLetterEnvelopeIdsRequestsignatures — the docs still described the pre-5 cursor-based pagination (StartId/NextId) and the legacyDeadLetterEnvelopesFoundResponsewrapper. Updated for offset-basedPageNumberpagination, the multi-storeIReadOnlyList<DeadLetterEnvelopeResults>response shape, and tenant-awareIdsrequest bodies.🧪 Known issues
SharedMemorytransport does not serialize envelopes on cross-host send. Surfaces as aMartenTests.Distribution.with_ancillary_stores.spread_out_over_multiple_hostsfailure whereAssignAgentsystem commands arrive at the destination node with emptyData/MessageTypeand the receive pipeline can't deserialize them. Long-standing — the marten CI workflow has been red on this test through V6.2.0 and V6.2.1, predates this release line entirely. Unblocked the V6.2.2 cycle by adding[Fact(Skip = "…")]referencing #2965; the underlying serialization bug is tracked separately and is out of scope for a JasperFx pin-bump patch release.Full changelog: JasperFx/wolverine@V6.2.1...V6.2.2
6.2.1
Patch release picking up upstream JasperFx 2.2.1 fixes. No Wolverine code changes — pure dependency bump.
Bumped pins
JasperFxJasperFx.EventsJasperFx.Events.SourceGeneratorJasperFx.SourceGeneratorUnchanged
JasperFx.RuntimeCompilerRelated links
6.2.0
Bug-fix + feature release on top of 6.1.0 — 13 PRs.
✨ New features
Custom
Result<T>Support — #2952 (refs #2221)First three phases of native
Result<T>-style handler return-value support:ResultPolicyregistry, handler-side unwrapping seams, and caller-sideInvokeAsync<T>unwrap. Lays the groundwork for integrating with libraries likeErrorOr,OneOf,FluentResults, etc.DbContext Abstractions for EF Core Transaction Middleware — #2919, #2954
The EF Core transaction middleware now binds correctly when handler parameters are declared as interface or abstract base abstractions over a concrete
DbContext. Multiple abstractions to the sameDbContextare supported in a single handler — the runtime resolves them all to the same scoped instance, and the transaction still auto-applies.📖 DbContext Abstractions docs
🚀 Performance
Outgoing Envelope Pooling — #2956 (closes #2955)
MessageRouter.RouteForPublishnow acquires from the runtime envelope pool (originally introduced in #2741 for the Executor sites in 6.1.0) when the route's sender is anInlineSendingAgentorBufferedSendingAgent. Measured −504 B/op (−90 %) on the transport-bound publish/send paths in the [CritterStackScalability harness](https://github.com/JasperFx/CritterStackS...Description has been truncated