Skip to content

Bump WolverineFx from 6.28.0 to 6.28.2 - #2271

Closed
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/nuget/WolverineFx-6.28.2
Closed

Bump WolverineFx from 6.28.0 to 6.28.2#2271
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/nuget/WolverineFx-6.28.2

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 17, 2026

Copy link
Copy Markdown
Contributor

Updated WolverineFx from 6.28.0 to 6.28.2.

Release notes

Sourced from WolverineFx's releases.

6.28.2

A bug fix release, with one new opt-in on the RabbitMQ listener contributed by the community.

Store agnostic document sessions

A handler can now take the JasperFx.Events.Documents contracts — IDocumentSessionOperations, IDocumentWriteOperations, IDocumentReadOperations — straight as parameters, and they bind and commit on Marten, Polecat and Fisher alike (#​3962, closes #​3956):

// Valid against all three stores -- nothing store specific is named
public static void Handle(RecordNote command, IDocumentSessionOperations session)
    => session.Store(new Note { Id = command.Id, Text = command.Text });

These are the document side counterparts to the IEventOperations contracts Wolverine already understood, and they are the only way store agnostic source can take a session without naming a concrete store type.

Before this, such a handler failed codegen outright on a stock host. Once bound, its writes were queued into the session's unit of work and silently discarded — no exception. Both halves are fixed.

⚠️ Importing the JasperFx.Events.Documents namespace makes ToListAsync() ambiguous with each store's own queryable extensions (CS0121). Alias the individual contracts rather than importing the namespace.

Durability agents no longer assigned to nodes that cannot run them

A node started with Durability.DurabilityAgentEnabled = false never registers the durability agent family, so it threw Unrecognized agent scheme 'wolverinedb' the moment the leader handed it one. The leader re-issued the identical assignment every five minutes indefinitely, no durability agent ran anywhere for that store, and owner_id = 0 outgoing envelopes were never recovered (#​3963, closes #​3954).

The failure was silent in both directions — every queue table read zero while the backlog grew. Nodes now publish a marker capability when the family is actually registered, the leader skips nodes that have not, and when no node in the cluster is capable a warning names the condition and the setting.

If you run a Balanced cluster with DurabilityAgentEnabled = false on any node, this release is worth taking.

Ancillary store transaction ownership

Ancillary store inference scanned chain.ServiceDependencies(), which walks constructor graphs recursively — so a dependency that merely held an ancillary store matched. A read only store injected two hops down counted the same as an injected DbContext, and a tenant Marten handler had its inbox and dead letters stolen by the wrong store (#​3957, closes #​3953).

That inference was only ever correct for EF Core. There is a new default null IPersistenceFrameProvider.TryDetermineTransactionOwnerType for it, implemented only by EF Core.

RabbitMQ

  • Wait for prefetched messages on drain (#​3796) — contributed by @​benjamin-alexander-simplisafe. Opt in with ListenToRabbitQueue("orders").DrainWaitForPrefetch() to let already prefetched messages finish rather than letting the broker requeue them.
  • The prefetch drain is safe for a non terminal stop (#​3960) — StopAsync is not always terminal, and a BatchingChannel silently discards a post after completion, so a delivery landing between the drain and the dispose latch vanished and was redelivered.
  • A rejected settle quiesces the channel the broker already closed (#​3964, addresses #​3950) — feeding a channel that is being torn down is what makes RabbitMQ.Client race itself and escalate a dead channel into a close of the entire connection (code=541). This narrows the window and speeds recovery; it does not prevent the close, whose root cause is upstream in rabbitmq-dotnet-client.
  • Listener recovery after a mid flight connection death is now asserted (#​3961).

Idle reaper no longer latches durable endpoints

A durable endpoint reached only via EndpointFor(uri) looked as disposable as an ephemeral reply queue and was reaped; the rebuilt agent then wrapped a disposed sender and latched forever (#​3958, closes #​3955). SendingAgentIdleTimeout had no test coverage at all before this.

6.28.1

Patch release over 6.28.0.

New package

WolverineFx.Http.Fisher (#​3949, closes #​3944) — there was a Wolverine.Http.Marten and a Wolverine.Http.Polecat and no Fisher equivalent, so a Fisher-backed application had nothing to reference for the aggregate/document HTTP attributes. The third flavour now exists alongside its siblings.

Fixes

A SQLite "schema name" is now the table name prefix it was documented to be

(#​3945, closes #​3943)

Setting FisherIntegration.MessageStorageSchemaName, or the schemaName argument to PersistMessagesWithSqlite(), reached the message store as a schema.table qualifier. SQLite has no user-defined schemas — the only names a plain connection knows are main, temp, and whatever has been ATTACHed — so any value other than main emitted SQL against a database that never existed, and the host died on the first envelope write with:

SQLite Error 1: 'no such table: <name>.wolverine_incoming_envelopes'

The two halves had disagreed all along. Weasel's SqliteObjectName drops the schema from its qualified name, so the DDL had been creating a bare wolverine_incoming_envelopes while the inherited DML asked for a qualified one; the main default is the only thing that hid it.

The name is now folded into the table names as a prefix — a meaning SQLite can honour, giving several logically separate Wolverine table sets inside one database file:

opts.PersistMessagesWithSqlite(connectionString, "reporting");
// => reporting_wolverine_incoming_envelopes, reporting_wolverine_outgoing_envelopes, ...

This covers the envelope, node, control queue, tenant, listener and saga tables, plus the dead-letter index names, since SQLite shares one identifier namespace between tables and indexes.

No migration. main is the default and prefixes nothing, so every database provisioned before this release keeps its existing wolverine_* names. Only hosts that explicitly set a non-main name see different table names — and those hosts could not start at all before this fix. Postgres, SQL Server, MySQL and Oracle render exactly as before.

FisherIntegration.TransportSchemaName is now documented as what it has always been on a Fisher host: inert. Tracked in #​3947.

Polecat unwraps Nullable<T> when determining an aggregate's id type

(#​3948, closes #​3942) Marten and Polecat disagreed for an aggregate whose id property is nullable: Polecat answered Nullable<T> verbatim, which is not a primitive id type, so the documented IdentifiedBy<T> escape hatch was skipped entirely. The two stores now agree.

Dependencies

Fisher 0.7.0 (#​3946) — the package floor moves from 0.6.0 to 0.7.0. Note that Fisher 0.7.0 bundles JasperFx.Events.SourceGenerator inside its own nupkg, as Polecat already does. A project that also references that generator explicitly will get two analyzer instances and a CS0433 duplicate-type error until one copy is removed.

Full changelog: JasperFx/wolverine@V6.28.0...V6.28.1

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.28.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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 Aug 17, 2026
@dependabot @github

dependabot Bot commented on behalf of github Aug 18, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #2273.

@dependabot dependabot Bot closed this Aug 18, 2026
@dependabot
dependabot Bot deleted the dependabot/nuget/WolverineFx-6.28.2 branch August 18, 2026 02:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment