Skip to content

chore(deps): Bump WolverineFx and WolverineFx.RabbitMQ#19

Merged
github-actions[bot] merged 1 commit into
mainfrom
dependabot/nuget/multi-c7c7a91cdd
May 19, 2026
Merged

chore(deps): Bump WolverineFx and WolverineFx.RabbitMQ#19
github-actions[bot] merged 1 commit into
mainfrom
dependabot/nuget/multi-c7c7a91cdd

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github May 19, 2026

Updated WolverineFx from 5.32.1 to 5.39.3.

Release notes

Sourced from WolverineFx's releases.

5.39.1

Fixed a regression problem reported here JasperFx/wolverine#2739

Full Changelog: JasperFx/wolverine@V5.39.0...V5.39.1

5.39.0

What's Changed

New Contributors

Full Changelog: JasperFx/wolverine@V5.38.0...V5.39.0

5.38.0

What's Changed

Full Changelog: JasperFx/wolverine@V5.37.2...V5.38.0

5.37.2

What's Changed

Full Changelog: JasperFx/wolverine@V5.37.0...V5.37.2

5.37.0

What's Changed

Full Changelog: JasperFx/wolverine@v5.36.1...V5.37.0

5.36.1

Upgrade to this version please if you use the EF Core transactional middleware and are using a very recent version of Wolverine

What's Changed

Full Changelog: JasperFx/wolverine@V5.36.0...v5.36.1

5.36.0

What's Changed

Full Changelog: JasperFx/wolverine@V5.35.2...V5.36.0

5.35.2

What's Changed

A small bug-fix and dependency-refresh release.

Persistence fixes

  • Oracle: timestamp default expressions now survive non-UTC DB sessions (#​2634) — OracleMessageStore.Initialize and the surrounding schema declared timestamp columns (health_check, started, posted, etc.) with a DEFAULT of SYS_EXTRACT_UTC(SYSTIMESTAMP). That returns a TIMESTAMP without a time zone, and when implicitly cast into the TIMESTAMP WITH TIME ZONE column Oracle stamps it with the session time zone — so for any session in UTC+N the just-persisted value's UTC equivalent was N hours in the past. That tripped the NodeAgentController.DoHealthChecksAsync staleness filter and surfaced as a NullReferenceException during the first leadership-election heartbeat (self!.AssignAgents([LeaderUri]) on a null self). All 18 occurrences swapped to SYSTIMESTAMP AT TIME ZONE 'UTC', with quote-doubling for the DDL contexts that go through Weasel's EXECUTE IMMEDIATE '...' wrapper.

Reliability hardening

  • Lock dbcontrol:// and oraclecontrol:// endpoints to BufferedInMemory (#​2637) — the database-backed control transport carries inter-node leader-election and agent-reassignment commands. Marking either endpoint Durable would route every control envelope through the same store-backed inbox/outbox the durability agent itself owns (deadlock); marking it Inline contradicts the batched-poll semantics. Both DatabaseControlEndpoint and OracleControlEndpoint now override supportsMode so any policy that tries to flip them off BufferedInMemory either silently skips (UseDurableInboxOnAllListeners, UseDurableOutboxOnAllSendingEndpoints, etc., already check SupportsMode) or fails fast with a clear InvalidOperationException.

Source-gen / startup

  • Aggregate IWolverineTypeLoader across all known assemblies (#​2632) by @​devployment — since 5.34.0, hosts on the source-generated codegen path silently dropped handlers that lived in referenced assemblies because tryDiscoverTypeLoaderFromAttribute only inspected Options.ApplicationAssembly. First invocation of one of those handlers threw IndeterminateRoutesException. The runtime now walks ApplicationAssembly and every assembly in Discovery.Assemblies, collects every [WolverineTypeManifest] loader it finds, and exposes their union via the new internal CompositeWolverineTypeLoader. Existing single-loader semantics are preserved when only one manifest is found.

Other

  • Saga timeout flag + scheduled-dispatch Activity tag (#​2631) by @​jeremydmiller — surfaces saga timeout and scheduled-dispatch metadata so the upcoming CritterWatch saga visualization can render in-flight saga state.

Dependencies

  • Bump JasperFx 1.28.0 → 1.28.2 and JasperFx.Events 1.29.0 → 1.31.1 (#​2638).

Full Changelog: JasperFx/wolverine@V5.35.1...V5.35.2

5.35.1

What's Changed

A bug-fix and small-feature release covering Oracle-in-Balanced-mode startup, a duplicate-poller defect on RavenDb, an AWS SQS sharded-slot naming fix, and a new SagaDescriptor surface for CritterWatch.

Persistence fixes

  • Oracle in DurabilityMode.Balanced now boots (#​2622) — OracleMessageStore.Initialize was a no-op, so hosts using Oracle persistence in Balanced mode failed to start with ArgumentOutOfRangeException("ControlEndpoint cannot be null for this usage"). The fix mirrors MessageDatabase.Initialize for Oracle and stands up a parallel OracleControlTransport / OracleControlEndpoint / OracleControlSender / OracleControlListener set under the new oraclecontrol:// protocol — necessary because the shared DatabaseControlSender / DatabaseControlListener assume @-prefixed placeholders and Guid values that map directly onto a DbParameter, neither of which Oracle accepts (:-prefixed placeholders, RAW(16) id columns requiring byte[]). Also fixes a latent OracleMessageStore.EnqueueAsync no-op that left LogRecordsAsync silently dropping node records, and makes FetchRecentRecordsAsync DBNull-safe on the description column. Adds a new OracleTests.LeaderElection project so the leadership-compliance suite runs against Oracle (marked [Trait("Category","Flaky")] because the suite needs careful TM/DML lock sequencing between back-to-back runs).

  • RavenDb: only one durability agent polls after host start (#​2623, #​2629) by @​Bishbulb (root-cause investigation and original fix) and @​jeremydmiller — RavenDbMessageStore.StartScheduledJobs eagerly built and started a RavenDbDurabilityAgent at boot in addition to the agent that NodeAgentController already builds and starts via IAgentFamily / MessageStoreCollection. Two RavenDbDurabilityAgent instances then polled the same database concurrently, both believed they held the scheduled-job lock, raced to mark the same envelopes Incoming, and surfaced ConcurrencyException plus double-fired timeouts. Drops the eager StartTimers() call; the cluster-managed agent is now the single owner of polling. The agent returned from StartScheduledJobs is held by WolverineRuntime.DurableScheduledJobs purely for its disposal-time StopAsync. Comes with a reflection-free regression test (added RavenDbDurabilityAgent.IsPolling and CompositeAgent.InnerAgents for the test to enumerate without poking at private fields). A companion regression-guard test for CosmosDb is included; investigation showed the equivalent CosmosDb path does NOT have the bug today (CosmosDbMessageStore.BuildAgentFamily returns null and Uri uses the cosmosdb:// scheme rather than wolverinedb://, so MessageStoreCollection never registers a competing agent).

Other improvements

  • AWS SQS: correct naming for sharded slot endpoints in #​1f294ce5 — fixes a regression where sharded slot endpoint URIs were assembled with the wrong segment ordering, causing the consumer side to listen at the wrong queue.

  • SagaDescriptor exported via ServiceCapabilities in #f0998c7b — adds a saga-shape descriptor (saga type, id type, current state) to the capabilities exporter so CritterWatch can surface saga inventory and current state in its dashboard.

Full Changelog: JasperFx/wolverine@V5.34.0...V5.35.1

5.34.0

What's Changed

This release introduces three new features (Claim Check pattern, declarative Polecat data requirements, and a new opt-in WolverineFx.RuntimeCompilation package as the first step toward AOT compatibility), a fix for a long-standing service-location footgun, several real RavenDB and EF Core durability fixes, plus the cold-start prep work done as part of issue #​1577.

Highlights

  • Add Claim Check / DataBus pattern with [Blob] attribute (#​2412) by @​jeremydmiller in #​2617 — off-load large message-property payloads to external storage on send and re-hydrate them on receive, so the on-the-wire envelope stays small. Core abstractions (IClaimCheckStore, ClaimCheckToken, [Blob], FileSystemClaimCheckStore, opts.UseClaimCheck(...)) live in Wolverine.Persistence. Two new backend NuGet packages ship alongside: WolverineFx.ClaimCheck.AzureBlobStorage and WolverineFx.ClaimCheck.AmazonS3. New documentation page under /guide/durability/claim-checks.
  • Declarative data-requirement attributes for Polecat (#​2552) by @​jeremydmiller in #​2615 — [DocumentExists<T>], [DocumentDoesNotExist<T>], and PolecatOps.Document<T>().MustExist(...) / .MustNotExist(...) mirror the Marten ergonomics, with the same batch-query optimization that folds multiple existence checks into a single Polecat IBatchedQuery round-trip.
  • Service-located IMessageBus / IMessageContext now see the active context (#​2583) by @​jeremydmiller in #​2616 — when user code service-locates IMessageBus (e.g., constructor injection on a service the handler resolves at runtime), it now receives the same MessageContext the handler itself uses, preserving outbox semantics. Implemented as a per-chain opt-in (gated on Chain.UsesServiceLocation) so chains that don't service-locate pay zero AsyncLocal overhead per message.
  • Cold-start optimizations and WolverineFx.RuntimeCompilation opt-in package (#​1577) by @​jeremydmiller in #​2613 and #cc00ca0a — first pass at the cold-start / AOT roadmap. Wires the Wolverine.SourceGeneration analyzer into the WolverineFx NuGet output (so source-generated IWolverineTypeLoader discovery flows transitively to consumers), pre-populates the WolverineMessageNaming cache during startup to eliminate first-message reflection cost, applies [DynamicallyAccessedMembers] annotations on the Activator.CreateInstance call sites for trimmer-friendliness, and adds ConfigureAwait(false) across 117 awaits on the per-message hot path. The new WolverineFx.RuntimeCompilation package becomes the future-facing opt-in API for runtime Roslyn compilation; default behavior is preserved.

RavenDB durability fixes

  • Fix bulk RavenDB inbox store leaking duplicates as inbox-unavailable (#​2606) by @​Bishbulb in #​2606
  • Take over expired RavenDB scheduled-job and leadership locks (#​2608) by @​Bishbulb in #​2608
  • Disable optimistic concurrency on RavenDB cluster-wide node sessions; load-then-modify on agent-assignment writes (#​2610) by @​Bishbulb in #​2610

EF Core / ancillary stores

  • Fix DurableLocalQueue to route incoming envelopes to ancillary stores (#​2611) by @​jeremydmiller — handler chains targeting an ancillary message store now have their incoming envelopes persisted in that store rather than the main store, fixing a class of "envelope stuck as Incoming forever" bugs.
  • Fix WolverineEnabled annotation collision in ancillary-store EF Core scenarios as part of #​2618 — MapWolverineEnvelopeStorage is now idempotent when called against the same model graph more than once.

Other improvements

  • Fix MessageBus clobbering per-message Envelope.Source in #​26e38002 — MessageBus.Send was overwriting the per-message Source with the host's ServiceName, masking the originating service in causation tracking.
  • Surface upcoming ServiceLocationPolicy.NotAllowed v6 default (#​2584) by @​jeremydmiller in #​2609 — chains that resolve dependencies via service location now log a warning at codegen time, with a clear migration path to the new opt-in Wolverine.RuntimeCompilation story for v6.

CI stabilization

  • Several flaky test classes fixed or marked in #​2612 and #​2618 — timeout bumps, IDisposableIAsyncLifetime conversions, lifecycle cleanup; chronically broken-on-CI classes (SqliteTests.Transport.multi_tenancy_with_multiple_files, CosmosDbTests.LeaderElection.leader_election, Wolverine.RabbitMQ.Tests.send_by_topics, Wolverine.RabbitMQ.Tests.sending_raw_messages) tagged [Trait("Category", "Flaky")] with header comments documenting the symptom and the real follow-up fix.
  • JasperFx 1.28 / RuntimeCompiler 4.5 ambiguity fallout fixed in #​2618 — files importing both JasperFx.CodeGeneration and JasperFx.RuntimeCompiler now compile cleanly after the InitializeSynchronously extension method was moved into JasperFx.CodeGeneration upstream.

Issue-tracker housekeeping

  • #​2507 (Quartz.Net / TickerQ first-class integration) added to the 6.0 milestone with a phased plan documented on the issue.
  • #​1577 (cold-start optimization roadmap) updated with a six-phase plan and current-state checklist; phases 1–4 are non-breaking on v5.x and largely landed in this release.

Full Changelog: JasperFx/wolverine@V5.33.0...V5.34.0

5.33.0

What's Changed

This release includes a major reliability fix for distributed leader election, a port of the Polecat 2.x event store integration, and several other quality-of-life improvements.

Highlights

  • Fix #​2602: Leader split-brain via stale advisory lock by @​jeremydmiller in #​2607 — three-layer defensive fix that detects when a Postgres/SQL Server/MySQL/Oracle/SQLite advisory lock has been silently released server-side, steps down the local leader, releases its agents, and triggers a fresh leader election. Adds a new LeadershipLost node record type and an IWolverineObserver.LostLeadership() hook for monitoring.
  • Polecat 2.x event store integration by @​jeremydmiller in #​2598 — ports the aggregate handler workflow from Marten so SQL Server-backed projects can use Polecat as a native event store with Wolverine. Requires SQL Server 2025 for the native JSON type.
  • Fix #​2571: Preserve context fields on scheduled-send wrap/unwrap by @​jeremydmiller in #​2605 — saga IDs, tenant IDs, and other correlation fields now survive the scheduled-send envelope round-trip.
  • gRPC enhancements by @​jeremydmiller in #​2565 — middleware weaving, validate convention, user exception mapping, bidirectional streaming, code-first codegen, plus new samples.
  • Allow RabbitMQ exchanges to be declared passive by @​jeremydmiller in #​2574

Other Improvements

  • Move non-sticky-handlers guard inside the compile lock by @​jeremydmiller in #​2556
  • Add launchSettings.json to sample projects by @​jeremydmiller in #​2600

Full Changelog: JasperFx/wolverine@V5.32.1...V5.33.0

What's Changed

New Contributors

Full Changelog: JasperFx/wolverine@V5.32.1...V5.33.0

Commits viewable in compare view.

Updated WolverineFx.RabbitMQ from 5.32.1 to 5.39.3.

Release notes

Sourced from WolverineFx.RabbitMQ's releases.

5.39.1

Fixed a regression problem reported here JasperFx/wolverine#2739

Full Changelog: JasperFx/wolverine@V5.39.0...V5.39.1

5.39.0

What's Changed

New Contributors

Full Changelog: JasperFx/wolverine@V5.38.0...V5.39.0

5.38.0

What's Changed

Full Changelog: JasperFx/wolverine@V5.37.2...V5.38.0

5.37.2

What's Changed

Full Changelog: JasperFx/wolverine@V5.37.0...V5.37.2

5.37.0

What's Changed

Full Changelog: JasperFx/wolverine@v5.36.1...V5.37.0

5.36.1

Upgrade to this version please if you use the EF Core transactional middleware and are using a very recent version of Wolverine

What's Changed

Full Changelog: JasperFx/wolverine@V5.36.0...v5.36.1

5.36.0

What's Changed

Full Changelog: JasperFx/wolverine@V5.35.2...V5.36.0

5.35.2

What's Changed

A small bug-fix and dependency-refresh release.

Persistence fixes

  • Oracle: timestamp default expressions now survive non-UTC DB sessions (#​2634) — OracleMessageStore.Initialize and the surrounding schema declared timestamp columns (health_check, started, posted, etc.) with a DEFAULT of SYS_EXTRACT_UTC(SYSTIMESTAMP). That returns a TIMESTAMP without a time zone, and when implicitly cast into the TIMESTAMP WITH TIME ZONE column Oracle stamps it with the session time zone — so for any session in UTC+N the just-persisted value's UTC equivalent was N hours in the past. That tripped the NodeAgentController.DoHealthChecksAsync staleness filter and surfaced as a NullReferenceException during the first leadership-election heartbeat (self!.AssignAgents([LeaderUri]) on a null self). All 18 occurrences swapped to SYSTIMESTAMP AT TIME ZONE 'UTC', with quote-doubling for the DDL contexts that go through Weasel's EXECUTE IMMEDIATE '...' wrapper.

Reliability hardening

  • Lock dbcontrol:// and oraclecontrol:// endpoints to BufferedInMemory (#​2637) — the database-backed control transport carries inter-node leader-election and agent-reassignment commands. Marking either endpoint Durable would route every control envelope through the same store-backed inbox/outbox the durability agent itself owns (deadlock); marking it Inline contradicts the batched-poll semantics. Both DatabaseControlEndpoint and OracleControlEndpoint now override supportsMode so any policy that tries to flip them off BufferedInMemory either silently skips (UseDurableInboxOnAllListeners, UseDurableOutboxOnAllSendingEndpoints, etc., already check SupportsMode) or fails fast with a clear InvalidOperationException.

Source-gen / startup

  • Aggregate IWolverineTypeLoader across all known assemblies (#​2632) by @​devployment — since 5.34.0, hosts on the source-generated codegen path silently dropped handlers that lived in referenced assemblies because tryDiscoverTypeLoaderFromAttribute only inspected Options.ApplicationAssembly. First invocation of one of those handlers threw IndeterminateRoutesException. The runtime now walks ApplicationAssembly and every assembly in Discovery.Assemblies, collects every [WolverineTypeManifest] loader it finds, and exposes their union via the new internal CompositeWolverineTypeLoader. Existing single-loader semantics are preserved when only one manifest is found.

Other

  • Saga timeout flag + scheduled-dispatch Activity tag (#​2631) by @​jeremydmiller — surfaces saga timeout and scheduled-dispatch metadata so the upcoming CritterWatch saga visualization can render in-flight saga state.

Dependencies

  • Bump JasperFx 1.28.0 → 1.28.2 and JasperFx.Events 1.29.0 → 1.31.1 (#​2638).

Full Changelog: JasperFx/wolverine@V5.35.1...V5.35.2

5.35.1

What's Changed

A bug-fix and small-feature release covering Oracle-in-Balanced-mode startup, a duplicate-poller defect on RavenDb, an AWS SQS sharded-slot naming fix, and a new SagaDescriptor surface for CritterWatch.

Persistence fixes

  • Oracle in DurabilityMode.Balanced now boots (#​2622) — OracleMessageStore.Initialize was a no-op, so hosts using Oracle persistence in Balanced mode failed to start with ArgumentOutOfRangeException("ControlEndpoint cannot be null for this usage"). The fix mirrors MessageDatabase.Initialize for Oracle and stands up a parallel OracleControlTransport / OracleControlEndpoint / OracleControlSender / OracleControlListener set under the new oraclecontrol:// protocol — necessary because the shared DatabaseControlSender / DatabaseControlListener assume @-prefixed placeholders and Guid values that map directly onto a DbParameter, neither of which Oracle accepts (:-prefixed placeholders, RAW(16) id columns requiring byte[]). Also fixes a latent OracleMessageStore.EnqueueAsync no-op that left LogRecordsAsync silently dropping node records, and makes FetchRecentRecordsAsync DBNull-safe on the description column. Adds a new OracleTests.LeaderElection project so the leadership-compliance suite runs against Oracle (marked [Trait("Category","Flaky")] because the suite needs careful TM/DML lock sequencing between back-to-back runs).

  • RavenDb: only one durability agent polls after host start (#​2623, #​2629) by @​Bishbulb (root-cause investigation and original fix) and @​jeremydmiller — RavenDbMessageStore.StartScheduledJobs eagerly built and started a RavenDbDurabilityAgent at boot in addition to the agent that NodeAgentController already builds and starts via IAgentFamily / MessageStoreCollection. Two RavenDbDurabilityAgent instances then polled the same database concurrently, both believed they held the scheduled-job lock, raced to mark the same envelopes Incoming, and surfaced ConcurrencyException plus double-fired timeouts. Drops the eager StartTimers() call; the cluster-managed agent is now the single owner of polling. The agent returned from StartScheduledJobs is held by WolverineRuntime.DurableScheduledJobs purely for its disposal-time StopAsync. Comes with a reflection-free regression test (added RavenDbDurabilityAgent.IsPolling and CompositeAgent.InnerAgents for the test to enumerate without poking at private fields). A companion regression-guard test for CosmosDb is included; investigation showed the equivalent CosmosDb path does NOT have the bug today (CosmosDbMessageStore.BuildAgentFamily returns null and Uri uses the cosmosdb:// scheme rather than wolverinedb://, so MessageStoreCollection never registers a competing agent).

Other improvements

  • AWS SQS: correct naming for sharded slot endpoints in #​1f294ce5 — fixes a regression where sharded slot endpoint URIs were assembled with the wrong segment ordering, causing the consumer side to listen at the wrong queue.

  • SagaDescriptor exported via ServiceCapabilities in #f0998c7b — adds a saga-shape descriptor (saga type, id type, current state) to the capabilities exporter so CritterWatch can surface saga inventory and current state in its dashboard.

Full Changelog: JasperFx/wolverine@V5.34.0...V5.35.1

5.34.0

What's Changed

This release introduces three new features (Claim Check pattern, declarative Polecat data requirements, and a new opt-in WolverineFx.RuntimeCompilation package as the first step toward AOT compatibility), a fix for a long-standing service-location footgun, several real RavenDB and EF Core durability fixes, plus the cold-start prep work done as part of issue #​1577.

Highlights

  • Add Claim Check / DataBus pattern with [Blob] attribute (#​2412) by @​jeremydmiller in #​2617 — off-load large message-property payloads to external storage on send and re-hydrate them on receive, so the on-the-wire envelope stays small. Core abstractions (IClaimCheckStore, ClaimCheckToken, [Blob], FileSystemClaimCheckStore, opts.UseClaimCheck(...)) live in Wolverine.Persistence. Two new backend NuGet packages ship alongside: WolverineFx.ClaimCheck.AzureBlobStorage and WolverineFx.ClaimCheck.AmazonS3. New documentation page under /guide/durability/claim-checks.
  • Declarative data-requirement attributes for Polecat (#​2552) by @​jeremydmiller in #​2615 — [DocumentExists<T>], [DocumentDoesNotExist<T>], and PolecatOps.Document<T>().MustExist(...) / .MustNotExist(...) mirror the Marten ergonomics, with the same batch-query optimization that folds multiple existence checks into a single Polecat IBatchedQuery round-trip.
  • Service-located IMessageBus / IMessageContext now see the active context (#​2583) by @​jeremydmiller in #​2616 — when user code service-locates IMessageBus (e.g., constructor injection on a service the handler resolves at runtime), it now receives the same MessageContext the handler itself uses, preserving outbox semantics. Implemented as a per-chain opt-in (gated on Chain.UsesServiceLocation) so chains that don't service-locate pay zero AsyncLocal overhead per message.
  • Cold-start optimizations and WolverineFx.RuntimeCompilation opt-in package (#​1577) by @​jeremydmiller in #​2613 and #cc00ca0a — first pass at the cold-start / AOT roadmap. Wires the Wolverine.SourceGeneration analyzer into the WolverineFx NuGet output (so source-generated IWolverineTypeLoader discovery flows transitively to consumers), pre-populates the WolverineMessageNaming cache during startup to eliminate first-message reflection cost, applies [DynamicallyAccessedMembers] annotations on the Activator.CreateInstance call sites for trimmer-friendliness, and adds ConfigureAwait(false) across 117 awaits on the per-message hot path. The new WolverineFx.RuntimeCompilation package becomes the future-facing opt-in API for runtime Roslyn compilation; default behavior is preserved.

RavenDB durability fixes

  • Fix bulk RavenDB inbox store leaking duplicates as inbox-unavailable (#​2606) by @​Bishbulb in #​2606
  • Take over expired RavenDB scheduled-job and leadership locks (#​2608) by @​Bishbulb in #​2608
  • Disable optimistic concurrency on RavenDB cluster-wide node sessions; load-then-modify on agent-assignment writes (#​2610) by @​Bishbulb in #​2610

EF Core / ancillary stores

  • Fix DurableLocalQueue to route incoming envelopes to ancillary stores (#​2611) by @​jeremydmiller — handler chains targeting an ancillary message store now have their incoming envelopes persisted in that store rather than the main store, fixing a class of "envelope stuck as Incoming forever" bugs.
  • Fix WolverineEnabled annotation collision in ancillary-store EF Core scenarios as part of #​2618 — MapWolverineEnvelopeStorage is now idempotent when called against the same model graph more than once.

Other improvements

  • Fix MessageBus clobbering per-message Envelope.Source in #​26e38002 — MessageBus.Send was overwriting the per-message Source with the host's ServiceName, masking the originating service in causation tracking.
  • Surface upcoming ServiceLocationPolicy.NotAllowed v6 default (#​2584) by @​jeremydmiller in #​2609 — chains that resolve dependencies via service location now log a warning at codegen time, with a clear migration path to the new opt-in Wolverine.RuntimeCompilation story for v6.

CI stabilization

  • Several flaky test classes fixed or marked in #​2612 and #​2618 — timeout bumps, IDisposableIAsyncLifetime conversions, lifecycle cleanup; chronically broken-on-CI classes (SqliteTests.Transport.multi_tenancy_with_multiple_files, CosmosDbTests.LeaderElection.leader_election, Wolverine.RabbitMQ.Tests.send_by_topics, Wolverine.RabbitMQ.Tests.sending_raw_messages) tagged [Trait("Category", "Flaky")] with header comments documenting the symptom and the real follow-up fix.
  • JasperFx 1.28 / RuntimeCompiler 4.5 ambiguity fallout fixed in #​2618 — files importing both JasperFx.CodeGeneration and JasperFx.RuntimeCompiler now compile cleanly after the InitializeSynchronously extension method was moved into JasperFx.CodeGeneration upstream.

Issue-tracker housekeeping

  • #​2507 (Quartz.Net / TickerQ first-class integration) added to the 6.0 milestone with a phased plan documented on the issue.
  • #​1577 (cold-start optimization roadmap) updated with a six-phase plan and current-state checklist; phases 1–4 are non-breaking on v5.x and largely landed in this release.

Full Changelog: JasperFx/wolverine@V5.33.0...V5.34.0

5.33.0

What's Changed

This release includes a major reliability fix for distributed leader election, a port of the Polecat 2.x event store integration, and several other quality-of-life improvements.

Highlights

  • Fix #​2602: Leader split-brain via stale advisory lock by @​jeremydmiller in #​2607 — three-layer defensive fix that detects when a Postgres/SQL Server/MySQL/Oracle/SQLite advisory lock has been silently released server-side, steps down the local leader, releases its agents, and triggers a fresh leader election. Adds a new LeadershipLost node record type and an IWolverineObserver.LostLeadership() hook for monitoring.
  • Polecat 2.x event store integration by @​jeremydmiller in #​2598 — ports the aggregate handler workflow from Marten so SQL Server-backed projects can use Polecat as a native event store with Wolverine. Requires SQL Server 2025 for the native JSON type.
  • Fix #​2571: Preserve context fields on scheduled-send wrap/unwrap by @​jeremydmiller in #​2605 — saga IDs, tenant IDs, and other correlation fields now survive the scheduled-send envelope round-trip.
  • gRPC enhancements by @​jeremydmiller in #​2565 — middleware weaving, validate convention, user exception mapping, bidirectional streaming, code-first codegen, plus new samples.
  • Allow RabbitMQ exchanges to be declared passive by @​jeremydmiller in #​2574

Other Improvements

  • Move non-sticky-handlers guard inside the compile lock by @​jeremydmiller in #​2556
  • Add launchSettings.json to sample projects by @​jeremydmiller in #​2600

Full Changelog: JasperFx/wolverine@V5.32.1...V5.33.0

What's Changed

New Contributors

Full Changelog: JasperFx/wolverine@V5.32.1...V5.33.0

Commits viewable in compare view.

Summary by CodeRabbit

  • Chores
    • Updated core framework dependencies to improve platform stability.

Review Change Stack

@dependabot dependabot Bot added .NET Pull requests that update .NET code dependencies Pull requests that update a dependency file labels May 19, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 19, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: afaa2ed5-88a1-4324-a317-d49f8b3567ab

📥 Commits

Reviewing files that changed from the base of the PR and between ea628fe and c28c36f.

📒 Files selected for processing (1)
  • Directory.Packages.props
🚧 Files skipped from review as they are similar to previous changes (1)
  • Directory.Packages.props

📝 Walkthrough

Walkthrough

This PR updates central NuGet package versions in Directory.Packages.props: WolverineFx and WolverineFx.RabbitMQ are bumped to 5.39.3; WolverineFx.Postgresql remains at 5.32.1.

Changes

Wolverine Dependency Updates

Layer / File(s) Summary
Wolverine package version updates
Directory.Packages.props
WolverineFx and WolverineFx.RabbitMQ package versions are updated from 5.32.1 to 5.39.3 in the central manifest; WolverineFx.Postgresql remains 5.32.1.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Poem

🐰 In the manifest garden I nibble and cheer,
Two packages hop to five-point-three-nine-three this year,
Postgres stays steady, roots firm and deep,
Pins held tight while versions leap,
A carrot for tidy deps and restful sleep.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description is well-documented with comprehensive release notes but does not follow the repository's required template structure with sections like Summary, Affected projects, Cross-repo notes, and Checklist. Update the PR description to follow the template: include a brief Summary section, check affected projects, note any cross-repo requirements, and complete the verification checklist items.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main change: bumping two WolverineFx packages to their latest versions.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dependabot/nuget/multi-c7c7a91cdd

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions Bot enabled auto-merge (squash) May 19, 2026 04:37
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@Directory.Packages.props`:
- Around line 90-92: Update the PackageVersion entry for the Wolverine
PostgreSQL package so it matches the other Wolverine packages; change the
<PackageVersion Include="WolverineFx.Postgresql" Version="5.32.1"/> entry to use
Version="5.39.3" (the entry identified by Include="WolverineFx.Postgresql") to
ensure all WolverineFx packages are aligned and avoid runtime compatibility
issues.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: f67fc5f3-7e9a-4da1-8ebf-6e3590a5d87d

📥 Commits

Reviewing files that changed from the base of the PR and between 003d72b and 8b43d7e.

📒 Files selected for processing (1)
  • Directory.Packages.props

Comment thread Directory.Packages.props
Comment on lines +90 to +92
<PackageVersion Include="WolverineFx" Version="5.39.3"/>
<PackageVersion Include="WolverineFx.Postgresql" Version="5.32.1"/>
<PackageVersion Include="WolverineFx.RabbitMQ" Version="5.32.1"/>
<PackageVersion Include="WolverineFx.RabbitMQ" Version="5.39.3"/>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Check available versions of WolverineFx.Postgresql on NuGet and verify compatibility

# Check latest version of WolverineFx.Postgresql
echo "=== Checking WolverineFx.Postgresql versions ==="
curl -s 'https://api.nuget.org/v3-flatcontainer/wolverinefx.postgresql/index.json' | jq -r '.versions[]' | tail -20

# Check if 5.39.3 exists
echo -e "\n=== Checking if version 5.39.3 exists ==="
curl -s 'https://api.nuget.org/v3-flatcontainer/wolverinefx.postgresql/index.json' | jq -r '.versions[]' | grep -E '^5\.39\.'

# Check release notes/dependencies for version constraints
echo -e "\n=== Checking package metadata for latest version ==="
LATEST=$(curl -s 'https://api.nuget.org/v3-flatcontainer/wolverinefx.postgresql/index.json' | jq -r '.versions[-1]')
echo "Latest version: $LATEST"
curl -s "https://api.nuget.org/v3-flatcontainer/wolverinefx.postgresql/${LATEST}/wolverinefx.postgresql.nuspec" | grep -A 5 -i "dependency"

Repository: Harborline-Software/signal-bridge

Length of output: 926


Update WolverineFx.Postgresql to version 5.39.3 to align with other Wolverine packages.

The PR updates WolverineFx and WolverineFx.RabbitMQ to 5.39.3, but WolverineFx.Postgresql remains at 5.32.1. Version 5.39.3 is available for WolverineFx.Postgresql on NuGet. This 7-minor-version gap between packages in the same ecosystem can cause runtime incompatibilities, particularly given the "outbox/inbox/EF Core alignment" and "durability fixes" mentioned in the release notes that may impact database integrations.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Directory.Packages.props` around lines 90 - 92, Update the PackageVersion
entry for the Wolverine PostgreSQL package so it matches the other Wolverine
packages; change the <PackageVersion Include="WolverineFx.Postgresql"
Version="5.32.1"/> entry to use Version="5.39.3" (the entry identified by
Include="WolverineFx.Postgresql") to ensure all WolverineFx packages are aligned
and avoid runtime compatibility issues.

@ctwoodwa
Copy link
Copy Markdown
Contributor

@dependabot rebase

@dependabot dependabot Bot force-pushed the dependabot/nuget/multi-c7c7a91cdd branch from 8b43d7e to ea628fe Compare May 19, 2026 16:46
@ctwoodwa
Copy link
Copy Markdown
Contributor

@dependabot rebase

Bumps WolverineFx from 5.32.1 to 5.39.3
Bumps WolverineFx.RabbitMQ from 5.32.1 to 5.39.3

---
updated-dependencies:
- dependency-name: WolverineFx
  dependency-version: 5.39.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: WolverineFx.RabbitMQ
  dependency-version: 5.39.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot force-pushed the dependabot/nuget/multi-c7c7a91cdd branch from ea628fe to c28c36f Compare May 19, 2026 23:01
@github-actions github-actions Bot merged commit 2ad3ca2 into main May 19, 2026
7 checks passed
@dependabot dependabot Bot deleted the dependabot/nuget/multi-c7c7a91cdd branch May 19, 2026 23:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant