Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Bump WolverineFx from 6.21.0 to 6.23.1 - #542

#542
Closed
dependabot[bot] wants to merge 1 commit into
mainVerifyTests/Verify.Wolverine:mainfrom
dependabot/nuget/src/WolverineFx-6.23.1VerifyTests/Verify.Wolverine:dependabot/nuget/src/WolverineFx-6.23.1Copy head branch name to clipboard
Closed

Bump WolverineFx from 6.21.0 to 6.23.1#542
dependabot[bot] wants to merge 1 commit into
mainVerifyTests/Verify.Wolverine:mainfrom
dependabot/nuget/src/WolverineFx-6.23.1VerifyTests/Verify.Wolverine:dependabot/nuget/src/WolverineFx-6.23.1Copy head branch name to clipboard

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jul 28, 2026

Copy link
Copy Markdown
Contributor

Updated WolverineFx from 6.21.0 to 6.23.1.

Release notes

Sourced from WolverineFx's releases.

6.23.1

Agent distribution

TL;DR: if you pause a projection from CritterWatch on 6.23.0, restarting it appears to do nothing for a full minute. This fixes that.

  • A paused projection or subscription agent now resumes immediately when you restart it (#​3663). On 6.23.0 the restart was accepted, the pause restriction was cleared, and then nothing happened until the pending-assignment ledger's TTL expired — 2 × CheckAssignmentPeriod, so 60 seconds with the defaults. Long enough that an operator reasonably concludes the agent is never coming back.

    The ledger introduced in 6.23.0 (#​3622) only counted an assignment as confirmed if a later evaluation saw the agent running and still assigned to the same node. A pause makes those two conditions mutually exclusive: the first evaluation that can observe the delivered assignment is the same one that detaches the agent. The entry was never confirmed, nothing on the stop path cleared it, and the restart's AssignAgent was suppressed as a duplicate still in flight. Delivery alone now confirms the entry, which is the only question the ledger was ever asking.

  • Pausing an agent no longer briefly starts it first (#​3666). ApplyRestrictionsAsync kickstarted a health check before persisting the operator's restriction change, so that evaluation ran against the old restrictions and could act against the very intent being applied — for a pause, re-assigning and starting the agent one beat before the merged evaluation stopped it again. Besides the wasted daemon start/stop cycle, this is what armed the stale ledger entry behind #​3663.

PostgreSQL

  • Advisory-lock sessions stay invisible to Marten's async-daemon gap detection (#​3664). Marten 9.16.1+ will not skip a stale event-sequence gap while any session whose open transaction predates that gap is still alive (marten#​4953). A session parked in an open transaction for the life of the process therefore reads as a permanent "possible reserver" and can hold the high-water mark — and every async projection — behind a gap that is genuinely dead.

    Wolverine's long-held locks were already shaped correctly: leader election and node coordination hold session-scoped advisory locks on a dedicated connection with no transaction, so they show up as state='idle' with a NULL xact_start. Those sessions are now also tagged application_name = 'wolverine-advisory-lock:<database>', which turns a pg_stat_activity investigation from guesswork into something you can read at a glance. The constraints are pinned in tests and in the Postgres durability docs, including the trap worth knowing in your own code: never add a keepalive query inside a long-lived open transaction — it bumps state_change, makes the session look active, and re-promotes it to candidate reserver.

    Note for combined Marten + Wolverine deployments: older guidance suggested Postgres's idle_in_transaction_session_timeout as a dead-gap backstop. Prefer upgrading Marten and using SkipStaleGapsDespiteLiveTransactionsAfter instead.

6.23.0

Projection & agent distribution

TL;DR: this prevents Wolverine from going into a panic doing agent assignments and churning crazily hard during Kubernetes rollouts or cluster starts and that's a very good thing

The bulk of this release. A wave of fixes (WO-1..8) to the agent assignment plane that together remove the re-assignment churn and livelock that could leave projection agents flapping or wedged.

  • Node heartbeats no longer block behind command execution (#​3620)
  • Node resurrection restores the node's real identity rather than a skeleton record (#​3621)
  • A pending-assignment ledger suppresses duplicate AssignAgent floods (#​3622)
  • Agent batch starts are chunked and bounded-parallel, so they stay safe at scale (#​3623)
  • Ejection hysteresis plus leader protection (#​3624)
  • The assignment row is re-upserted for agents that are already running (#​3619)
  • Local agents drain with bounded parallelism on shutdown (#​3636)
  • Paused shards now say why. IEventSubscriptionAgent.Failure surfaces a ShardFailure — category, the failing event's sequence and type, and the root exception type — through health checks and a new IWolverineObserver.AgentPaused hook plus a NodeRecordType.AgentPaused record. Failures bound to a specific event (ApplyEvent, EventSerialization, UnknownEventType) or to two processes racing one shard (ProgressionOutOfOrder) are no longer auto-restarted, since they would die on the identical event every time (#​3637, #​3638)
  • Agent starts retry locally, bounded by Durability.AgentStartRetryAttempts / AgentStartRetryDelay, instead of idling a full CheckAssignmentPeriod after a startup race (#​3519)
  • Store-scoped FindAgentUriAsync overload (#​3647) and a store-aware TryRebuildRegisteredProjectionAsync overload (#​3618)

Bumps JasperFx.Events to 2.36.1, Marten to 9.20.0 and Polecat to 5.7.0.

HTTP

  • Endpoints that advertise a request body their HTTP method cannot carry now fail fast at startup instead of silently 404ing out of the route matcher (#​3648)
  • A missing Content-Type on an [AcceptsContentType] route returns 415 rather than 404 (#​3649)
  • Query-only [AsParameters] endpoints no longer advertise a form body, which had been dropping them from route matching entirely (#​3630)
  • Explicitly-routed chains — PublishMessage<T> and SendMessage<T> — now describe the message they read from the body. They had been advertising no request body at all in OpenAPI (#​3646)
  • Enum values in query strings and form posts parse case-insensitively (#​3629)
  • Compiled queries returned as a Wolverine.Http resource no longer execute twice (#​3625)

Transports

  • Conventional routing respects named brokers (#​3633)
  • Google Pub/Sub: named-broker support for sharded and partitioned topics (#​3632), and ListenToPubsubSubscriptionOnNamedBroker (#​3631)
  • Kafka: topic-already-exists error codes are handled rather than thrown (#​3640)
  • Redis: scheduled retries survive an unreadable timestamp (#​3613), and scheduled entries that repeatedly fail to deserialize are dead-lettered instead of looping (#​3644)
  • EnvelopeMapper reads both timestamp header formats (#​3645)
  • NServiceBus interop: the EnclosedMessageTypes header is split before the message type is resolved, so interop works across Azure Service Bus, SNS, SQS and the database transports (#​3628)

Persistence

  • Oracle runs the durability agent through the shared batching mechanics (#​3614). Note that ODP.NET exposes no DbBatch, so the work splits per statement.

Other

  • Resource discovery no longer eager-connects broker transports (#​3617)

Contributors

Thank you to everyone who contributed to this release:

... (truncated)

6.22.0

Wolverine 6.22.0 rolls up the claim-check backend wave, distributed-agent and durability hardening, HTTP/OpenAPI binding fixes, and the Marten 9.18 / JasperFx 2.34 critter-stack alignment.

Dependency alignment

  • JasperFx family → 2.34.0
  • Marten9.18.0 (with Marten.AspNetCore / Marten.Newtonsoft), Polecat [5.5.0,6.0.0)
  • Weasel family → 9.18.1

Claim-check offloading

  • New NATS JetStream Object Store claim-check backend (#​3506)
  • New PostgreSQL database-LOB claim-check backend (#​3507)
  • New Google Cloud Storage claim-check backend (#​3505)
  • Size-threshold auto-offload — large payloads offload to the claim-check store automatically (#​3504)
  • Per-message / per-endpoint store selection (#​3508)
  • Honor a DI-registered IClaimCheckStore (#​3564)
  • New claim-check backends are now packed for NuGet (#​3565)

Distributed agents & durability

  • Recover exclusive listener inboxes on the listening node (#​3590)
  • Reverse the reset-clears-queue-tables behavior; add IHost.ClearAllWolverineStorageAsync() (#​3592)
  • Subscription health check uses the tenant-scoped high water mark for per-tenant subscription agents (#​3582)
  • Isolate agent start failures so one wedged agent no longer skips its siblings (#​3519)
  • Restart a projection agent whose shard wedged out from under it (#​3519)
  • EventSubscriptionAgent restores continuous execution after Rebuild/Rewind (#​3520)
  • Stamp the assigned node onto owned event-store daemons (running_on_node, marten#​5001) (#​3578)
  • Solo-mode health-check loop no longer leaks an unbounded OpenTelemetry trace (#​3518)
  • Warn loudly when a host's application assembly is pinned by an earlier host (#​3521)

HTTP & OpenAPI

  • Describe chain-bound OpenAPI params from produced variables; narrow re-reflection to postprocessors (#​3601)
  • Bind [FromQuery] on arrays/collections instead of misrouting to complex-flattening (#​3602)
  • Bind scalar [FromQuery] decimal correctly + shape-test OpenAPI parameter description across type families (#​3586)
  • Don't describe a route-bound [FromQuery]/[FromHeader] parameter twice in OpenAPI (#​3586)
  • Marten 9.18 streaming typesStreamPaged, StreamPagedByCursor, ETag support (#​3593)
  • Honour opt-in discovery filters for HTTP endpoint discovery (#​3525)
  • Never infer a DbContext parameter as the HTTP request body (#​3538)

Transports

  • Add a parallel WolverineFx.Mqtt5 package (MQTTnet 5) (#​3517)
  • Pulsar: don't claim native scheduling without a retry-letter topic (#​3491)
  • Azure Service Bus: pin session listeners to specific session identifiers (#​3533)

Persistence

  • Clear transport queue tables on message-store reset — PostgreSQL (#​3529), SQLite (#​3553), MySQL (#​3551), Oracle (#​3552)
  • Oracle: durable inbox mark-as-handled binds RAW(16) Guid correctly (#​3581)
    ... (truncated)

Commits viewable in compare view.

Dependabot compatibility score

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 this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

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

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added .NET Pull requests that update .NET code dependencies Pull requests that update a dependency file labels Jul 28, 2026
@dependabot @github

dependabot Bot commented on behalf of github Jul 29, 2026

Copy link
Copy Markdown
Contributor Author

Looks like WolverineFx is no longer updatable, so this is no longer needed.

@dependabot dependabot Bot closed this Jul 29, 2026
@dependabot
dependabot Bot deleted the dependabot/nuget/src/WolverineFx-6.23.1 branch July 29, 2026 00:57
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.

0 participants

Morty Proxy This is a proxified and sanitized view of the page, visit original site.