Bump WolverineFx from 6.28.2 to 6.29.2 - #328
Merged
github-actions[bot] merged 1 commit intoAug 31, 2026
Merged
github-actions[bot] merged 1 commit into
github-actions[bot] merged 1 commit into
Conversation
--- updated-dependencies: - dependency-name: WolverineFx dependency-version: 6.29.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
github-actions
Bot
deleted the
dependabot/nuget/benchmarks/Foundatio.Mediator.Benchmarks/WolverineFx-6.29.2
branch
August 31, 2026 22:17
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updated WolverineFx from 6.28.2 to 6.29.2.
Release notes
Sourced from WolverineFx's releases.
6.29.2
A fix release. Four changes, three of them reported bugs.
RavenDB users should take this one
ClearAllAsyncdeleted node records by tracked entity from a session that had never loaded them, so a Solo-mode start after a Balanced-mode run threwInvalidOperationException: WolverineNode is not associated with the sessionon every stale node and the application could not start at all. The workaround of clearingWolverineNodesby hand in RavenDB Studio is no longer needed. (#3993, closes #3986)The compliance coverage written for that fix caught a second provider: SQLite orphaned every agent assignment row, because its assignment table has no
ON DELETE CASCADE(PostgreSQL, Sql Server and Oracle do). The orphans stay invisible until a node re-registers under the same id — the GH-3604 ejection path — where it returns owning agents it was never reassigned. The underlying gap was thatNodePersistenceCompliancenever exercisedClearAllAsyncat all, which is how two providers shipped it broken. It does now.Agents no longer stall on a node that cannot build them
When
IAgentFamily.BuildAgentAsyncthrew, the leader saw only an unconfirmed agent — which it deliberately does not treat as a failure — so the assignment stood and the same agent was requested on the same failing node forever. Reported as a 54-minute fleet-wide projection stall on a blue/green cluster with disjoint projection versions. Consecutive failed starts are now counted on the node that catches them and feed into the existing GH-3888 release path. NewDurabilitySettings.MaxAgentStartFailuresBeforeRelease(default3); set it to0for the previous behaviour. (#3994, closes #3970)The orphaned-message sweep no longer dominates database load
Reported against a 466-shard PostgreSQL deployment. The sweep's predicate could not use an index, so it full-scanned the whole inbox per database every five seconds to find nothing; the update was unbounded, so one node loss became a single ~910,000-row rewrite across the fleet; and it ran inside the shared recovery transaction, blocking inbox inserts. All three are fixed, with a new
OrphanedMessageReleaseBatchSizeand a dedicatedOrphanedMessageSweepPollingTime. (#3995, closes #3971)HTTP endpoints can take immutable request types
A
Before/BeforeAsyncmethod on an endpoint class that accepts the request type and returns it now replaces the request body for the rest of the chain, exactly as it has on the handler side since GH-516. Use it to stamp server-supplied values onto an immutablerecordrequest before the endpoint runs. (#3984)Full detail for every item is in CHANGELOG.md.
What's Changed
New Contributors
Full Changelog: JasperFx/wolverine@V6.29.1...V6.29.2
6.29.1
This bumps the Fisher dependency to 1.0. We needed this for the CritterWatch 1.0 release.
What's Changed
New Contributors
Full Changelog: JasperFx/wolverine@V6.29.0...V6.29.1
6.29.0
A feature release. Three of the five items fix silent failure modes — work that acted on a write which could still roll back, a convention mirror that installed a relay over a real handler, and two concurrent writers to one entity — so the notes below say what the old behaviour looked like, not just what changed.
AfterCommit— run work after the transactional commitAfterreads like a post-handler hook that runs at the end. It does not run after the commit (#3976, closes #3975).The commit is itself a postprocessor contributed by the persistence provider, and
Aftermethods are inserted at the front of that list. So anAftermethod observing a write is observing one that is not durable yet and may still roll back — and there was no supported way to ask for the other side of it, even though Wolverine uses that position itself for the outbox flush.Use the
AfterCommit/AfterCommitAsyncconvention or[WolverineAfterCommit], on message handlers, sagas and HTTP endpoints. Parameters bind exactly asAfteralready does.The position is structural, not positional — frames go into a new
IChain.PostCommitPostprocessorslist concatenated after every postprocessor at frame-assembly time, rather than being appended from a policy sequenced after the persistence policy. Getting the position right by luck of policy ordering is precisely what breaks silently later.Two behaviours worth knowing:
try/finally, so the exception unwinds straight past them. That is the point — the reason to want "after the commit" is usually that the side effect must not happen for a write that did not land.After's pre-commit position is unchanged and stays that way. Verified per provider: Marten, Polecat, Fisher, EF Core, RavenDb and CosmosDb each have a codegen test asserting the emitted call lands after that provider's own commit frame.A store-agnostic
EventsToAppendreturn typeWolverine.Marten.Events,Wolverine.Polecat.EventsandWolverine.Fisher.Eventsare identical but store-named, so a handler that wanted to be store-agnostic could not name any of them (#3969, closes #3941).The store-agnostic path did exist — a bare
IEnumerable<object>return is picked up by a fallback — but that fallback is positional.IEnumerable<T>is covariant, so every reference-typed collection in a return tuple is a candidate and the first one wins. Nothing failed at codegen and nothing failed at runtime; the wrong collection simply became the appended events.Ask what will be handled, and how a batch is shaped
Discovery materializes after options time, so an extension installing fallback handlers could not ask "will this message type have a handler?" and had to hand-roll a mirror of Wolverine's own discovery convention (#3977, closes #3974).
Such a mirror drifts, and it drifts silently: one that scanned a single assembly stopped seeing handlers that moved to a second, and installed a bare relay over a real handler — the exact defect the guard existed to prevent, with every codegen test still passing.