Bump WolverineFx from 6.31.0 to 6.35.0 - #2387
Closed
dependabot[bot] wants to merge 1 commit into
Closed
Conversation
--- updated-dependencies: - dependency-name: WolverineFx dependency-version: 6.35.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Contributor
Author
|
Superseded by #2388. |
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.31.0 to 6.35.0.
Release notes
Sourced from WolverineFx's releases.
6.35.0
Store operation side effects, everywhere
MartenOpscovered store / insert / update / delete plusStartStream; anything else meant taking anIDocumentSessionand giving up on the handler being a pure function. All three stores now coverwhat their own session API supports.
HardDelete,HardDeleteWhere,UndoDeleteWhereUpdateExpectedVersionUpdateRevisionTryUpdateRevisionPatch,PatchWhereQueueSqlCommandInsertObjects,DeleteObjectsAppend,ArchiveStreamUnArchiveStream,TombstoneStreamThe gaps are deliberate: each set was checked against that store's own session API rather than copied
across, and an op whose
Executecould only throw is worse than the absence of one. Polecat's lastrow is the reverse case — two operations Marten has no counterpart for.
Every op also implements
ITenantedMartenOp/ITenantedPolecatOp/ITenantedFisherOp, so oneextension scopes any of them while preserving the concrete return type:
Thanks to @erdtsieck for the Marten half, which is where this started.
Event Modeling: a declared model and the code now meet
Three findings from one comparison of a curated Event Model against the application built from it
(#4385, #4386, #4387):
behaviour (
ConfirmAppointment) while a derived source names it for the message type or the route.An eleven-slice application assembled as twenty-two with no disagreements — not because the sources
agreed, but because they never met.
[Emits(typeof(...))]lets a handler name the events its signature cannot carry.EventsToAppendand
StartStreamerase the element types, so the more idiomatically event-modelled an applicationwas, the emptier its derived model got.
Patternis left unclaimed for a message handler. A handler cannot tell a Command from anAutomation, so a declaration wins the role instead of losing to a guess.
pattern: "Command"inevent-modeloutput or theServiceCapabilitiessnapshot.Patternis still derived wherever thecode answers the question — HTTP routes, gRPC RPCs, schedules, external systems, and any slice whose
... (truncated)
6.34.0
Seventy commits since 6.33.0. The bulk of it is a sustained performance wave on the durability
and message-execution paths, alongside a new recurring-schedule feature, Native AOT support that
now boots end to end, and a long run of clustering and transport fixes.
New
opts.Schedulesregisters messages to be published on acron expression, coordinated across the cluster so exactly one node fires each occurrence. (#4307)
a transport-wide default dead letter queue name. Note the migration hazard called out in the docs
if you adopt the prefix on an existing deployment. (#4263, #4281)
http://destinations, not justhttps://.ITransport.AdditionalProtocolsis the general mechanism, so any transport with legitimatelymulti-scheme addresses can opt in. (#4200 / #4379)
ResourceMigrationFailureMode.FailFaststays the default andkeeps
resources setupstrict;ContinueOnFailureslets a host whose broker topology isexternally owned log the failures and start. (#4119 / #4380)
Performance
The GH-4316 wave, measured on the multi-transport perf rig rather than by inspection. Highlights:
PostgreSQL and SQL Server, 37ms down to 0.04ms on the measured query. (#4336)
RavenDB. (#4369 / #4370)
throughput and 26% lower publish latency where the application publishes concurrently. (#4319 / #4368)
Envelopebodies above the LOHthreshold (13.5x at 100KB, with Gen1/Gen2 collections gone). (#4320, #4333)
transaction no longer trips SQL Server's 2100-parameter limit. (#4375 / #4376)
header handling, and metric accumulation.
DateTimeOffset.Nowis gone from the per-message paths.(#4322, #4323, #4324, #4325, #4326, #4328, #4335)
tables (#4334); SQL Server metrics counts come from index metadata instead of three full scans
(#4318); Redis Streams gains batched durable arrival, measured at +159% (#4329).
Two changes measured negative on the rig and were reverted rather than shipped — the Azure Service
Bus prefetch default and the coalescer's
Queueshape. Both are recorded so they are not revisited.Native AOT
A Wolverine application now completes a Native AOT publish and boots through its own bootstrap.
(#4287, #4298, #4301, #4305). A Native AOT app with any external transport used to die building its
first route — fixed in #4232 / #4378. The AOT publish smoke test hard-asserts a full boot.
Clustering, agents and durability
... (truncated)
6.33.0
The headline is a new package. WolverineFx.AI makes a one shot LLM call an ordinary Wolverine message: durable, outbox enrolled, retried by the same rules as everything else, and testable without a model anywhere in sight.
WolverineFx.AI (new package)
An
LlmCalloutis a message. Return one from a handler next to your storage action and it is enrolled in that handler's outbox, so a callout cannot fire for a transaction that did not commit and cannot be lost to a restart in between. The model's answer comes back as an ordinary cascading message, with an ordinary handler, an ordinary retry policy, and its own place in the correlation chain. (closes #4227)LlmBudget.MaximumPromptCharactersrefuses a runaway prompt before your provider is ever called;MaximumTokensPerWindowrefuses callouts once the node has burned its allowance. Both dead letter rather than retry, and so does an answer that cannot be parsed into the response type you asked for -- retrying either is the runaway spend the budget exists to stop.IChatClientfor testing.StubChatClientexercises a callout's whole round trip with no key, no network and no model.Wolverine.AI.AotSmokeproject underTrimMode=fullthat CI runs. (closes #4230)The package references only the Microsoft.Extensions.AI abstractions, never a vendor SDK. The provider -- Anthropic, OpenAI, Azure, Ollama -- and any middleware over it stay your choice.
Fixes
wolverine_nodescredited only one, so nothing in the system could ever stop the extra copy. (closes #4240)AssignmentChangeddescription carries an agent URI, a schema name and a destination node, which on a real cluster overran thedescriptioncolumn and failed the wholeAgentCommandbatch behind it. MySQL was worst hit atVARCHAR(255). (closes #4246)ServiceLocationPolicy.NotAllowed-- on HTTP endpoints and, now, on message handlers. Under the Wolverine 6 default this made the validation middleware unusable and threw at bootstrap. (closes #4238)[Entity],[All],[Queryable],[WriteAggregate]and the rest. (closes #3935)opts.DefaultDuplicateStatusCode, and deduplication refusals now advertise their problem document in OpenAPI.IHost.StopAsyncno longer tears the agents down twice.Upgrade note
6.33.0 requires Weasel 9.30.0, and that raises the GH-4246 fix from "new databases only" to "existing ones too": the schema differ now compares character lengths, so a widened
varcharis no longer invisible to it and an existing table is corrected in place by anALTER TABLE ... MODIFYthat keeps its rows.Worth knowing before you upgrade: that comparison runs in both directions. Width drift that was previously invisible now generates
ALTERs, and a model narrower than an existing column will emit a narrowingALTERthat can fail on real data. Sizes that are not character lengths -- a MySQLint(11)display width, a decimal precision, a datetime fsp -- are still ignored.Dependencies
JasperFx 2.60.0, Marten 9.30.0, Polecat 5.21.1, Fisher 1.0.6, Weasel 9.30.0.
6.32.0
See CHANGELOG.md for the full entries.
New packages
WolverineFx.AmazonS3andWolverineFx.AzureBlobStoragecarry document and saga persistence plus the claim check store that used to ship separately. Registration is explicit per type —Store<T>()andSaga<T>()are separate calls and each refuses the other's type — and saga writes are guarded by conditional requests, surfacing asSagaConcurrencyExceptionso oneOnException<ConcurrencyException>policy still covers every store. (#4160, originally #4165 by Anne Erdtsieck.)WolverineFx.ClaimCheck.AmazonS3is deprecated. The namespace is unchanged, so migration is a package reference swap — but keeping both referenced produces ambiguous-type errors.Redis document and saga persistence folds into the existing
WolverineFx.Redisrather than a new package, with saga concurrency implemented as a Lua compare-and-swap.Fixes
EnableInboxPartitioning(#4216); previously it could not be retired at all.AddStopConditionIfNullaccepts the null identity its signature declares (#4161).Diagnostics
BufferLimitis now null on the modes that never enforced it, with the broker's prefetch window reported asInFlightLimit.MaximumBrokerRedeliveriesis documented as the delivery count it actually is (#4216). Behaviour unchanged.Event model
Also
[FromMarten]and[FromEfCore](#4214).AddResourceSetupOnStartupandAutoProvision(#4223).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 rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill 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 versionwill 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 dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)