Skip to content

chore: Bump the wolverine-marten group with 6 updates#215

Merged
github-actions[bot] merged 1 commit intomainfrom
dependabot/nuget/Nexus.Api/wolverine-marten-52e336710b
Apr 30, 2026
Merged

chore: Bump the wolverine-marten group with 6 updates#215
github-actions[bot] merged 1 commit intomainfrom
dependabot/nuget/Nexus.Api/wolverine-marten-52e336710b

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github Apr 30, 2026

Updated Marten from 8.33.0 to 8.34.0.

Release notes

Sourced from Marten's releases.

8.34.0

What's Changed

This release rolls in the JasperFx 1.28 / JasperFx.Events 1.31 upgrade chain, several cold-start and runtime-perf optimizations, two stability fixes (advisory locks, projection version suffix), and a new declarative ancillary-store enrichment API.

Full Changelog: JasperFx/marten@V8.33.0...V8.34.0

Commits viewable in compare view.

Updated WolverineFx.FluentValidation from 5.33.0 to 5.35.1.

Release notes

Sourced from WolverineFx.FluentValidation's releases.

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

Commits viewable in compare view.

Updated WolverineFx.Http from 5.33.0 to 5.35.1.

Release notes

Sourced from WolverineFx.Http's releases.

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

Commits viewable in compare view.

Updated WolverineFx.Http.Marten from 5.33.0 to 5.35.1.

Release notes

Sourced from WolverineFx.Http.Marten's releases.

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

Commits viewable in compare view.

Updated WolverineFx.Marten from 5.33.0 to 5.35.1.

Release notes

Sourced from WolverineFx.Marten's releases.

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

Commits viewable in compare view.

Updated WolverineFx.RabbitMQ from 5.33.0 to 5.35.1.

Release notes

Sourced from WolverineFx.RabbitMQ's releases.

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

Commits viewable in compare view.

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions

Bumps Marten from 8.33.0 to 8.34.0
Bumps WolverineFx.FluentValidation from 5.33.0 to 5.35.1
Bumps WolverineFx.Http from 5.33.0 to 5.35.1
Bumps WolverineFx.Http.Marten from 5.33.0 to 5.35.1
Bumps WolverineFx.Marten from 5.33.0 to 5.35.1
Bumps WolverineFx.RabbitMQ from 5.33.0 to 5.35.1

---
updated-dependencies:
- dependency-name: Marten
  dependency-version: 8.34.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wolverine-marten
- dependency-name: Marten
  dependency-version: 8.34.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wolverine-marten
- dependency-name: Marten
  dependency-version: 8.34.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wolverine-marten
- dependency-name: WolverineFx.FluentValidation
  dependency-version: 5.35.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wolverine-marten
- dependency-name: WolverineFx.Http
  dependency-version: 5.35.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wolverine-marten
- dependency-name: WolverineFx.Http.Marten
  dependency-version: 5.35.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wolverine-marten
- dependency-name: WolverineFx.Marten
  dependency-version: 5.35.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wolverine-marten
- dependency-name: WolverineFx.Http.Marten
  dependency-version: 5.35.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wolverine-marten
- dependency-name: WolverineFx.RabbitMQ
  dependency-version: 5.35.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wolverine-marten
- dependency-name: WolverineFx.RabbitMQ
  dependency-version: 5.35.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: wolverine-marten
...

Signed-off-by: dependabot[bot] <support@github.com>
@github-actions github-actions Bot enabled auto-merge (squash) April 30, 2026 09:23
@github-actions github-actions Bot merged commit ef8efc9 into main Apr 30, 2026
6 of 8 checks passed
@dependabot dependabot Bot deleted the dependabot/nuget/Nexus.Api/wolverine-marten-52e336710b branch April 30, 2026 09:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants