Bump WolverineFx from 6.26.0 to 6.28.0 - #555
Closed
dependabot[bot] wants to merge 1 commit into
Closed
Conversation
--- updated-dependencies: - dependency-name: WolverineFx dependency-version: 6.28.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Contributor
Author
|
OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting If you change your mind, just re-open this PR and I'll resolve any conflicts on it. |
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.26.0 to 6.28.0.
Release notes
Sourced from WolverineFx's releases.
6.28.0
Storage agnostic conventions wave: write handlers and HTTP endpoints that read and append without naming a store.
Highlights
Storage.AppendEvents()/Storage.StartStream()(#3934) — event stream counterparts toStorage.Store(), expressed entirely againstJasperFx.Events.IEventOperations, so the same handler is valid on Marten, Polecat or Fisher with noIDocumentSession.[FirstOrDefault](#3933) — the singleton document[Entity]cannot express, since it has no identity to look up by.[All]and[Queryable](#3936) — every document of a type as anIReadOnlyList<T>, and a rawIQueryable<T>escape hatch.OnMissing.EmptyContentWith204,[NoContentIfMissing]/[NotFoundIfMissing](#3931) — answer an empty 204 instead of a 404 when there is simply nothing to return.DateTime/DateTimeOffset nowin Wolverine.HTTP (#3932) — matches the long standing message handler convention. Previously such a parameter silently bound from the query string and arrived asdefault.Notable fix
An
IEventStoreOperations/IEventOperationshandler or endpoint parameter now resolves and commits (#3936).CanApplyrecognized no event operations type, soAutoApplyTransactionsskipped those chains and appended events were queued into the session's unit of work and never committed — with no exception thrown. This also affected each store's own event operations types, so it predates this release.Also:
[All]/[Queryable]/[FirstOrDefault]provider errors now name the declaring method (#3937).Full detail in CHANGELOG.md.
6.27.1
Wolverine 6.27.1
A same-day patch on 6.27.0, fixing a regression that release introduced and closing the asymmetry that surfaced it.
Regression fix:
[WriteAggregate]lost its not-found guard in 6.27.0WriteAggregateAttributederives fromWriteModelAttributeand overrides neitherModifynorRequired, so it inherited 6.27.0's nullability inference (GH-3916) wholesale.[WriteAggregate]shipped a year before that inference, so in 6.27.0 an existing handler like:silently lost its not-found guard and began running against a model that was never loaded — for a write model, that means appending events against a stream that was not fetched.
[WriteAggregate]and[ReadAggregate]now pin the unconditionalRequired = truethey have always had, in Marten, Polecat and Fisher alike. SayRequired = falseexplicitly, or move to[WriteModel]/[ReadModel], to opt out.If you are on 6.27.0 and use
[WriteAggregate]with a nullable parameter and no explicitRequired, upgrade.[ReadModel]takesRequiredfrom the parameter's nullable annotation (#3929)Matching what GH-3916 did for
[WriteModel]:Order orderis required and gets a not-found guard,Order? orderis not and is handed to your method asnullso your own null branch runs. An explicitRequiredat the call site still wins over the annotation.This closes the write/read asymmetry — a handler moving between the two forms no longer needs a different attribute spelling for identical intent.
What deliberately did not change
[Entity]keeps its unconditionalRequired = true. It is the oldest and most widely used of these attributes and is heavily used in HTTP endpoints, whereRequired = truewithOnMissing.Simple404is the documented 404 behaviour. Loosening it would turn a clean 404 into a runtimeNullReferenceExceptionin an endpoint body.[DeciderFunction]and[DcbModel]keepRequired = false. Their model is folded out of an event stream or boundary and is always materialized, so absence is not the normal case; inferring here would tighten the default and could stop messages that process today.Worth knowing
In an assembly compiled with
<Nullable>disable</Nullable>a reference-type parameter reads as unknown rather than nullable, so[WriteModel]and[ReadModel]fall back toRequired = true. The inference is a no-op for those projects rather than a silent behaviour change. Now documented in the persistence guide.6.27.0
Wolverine 6.27.0
New:
WolverineFx.FisherFisher — the embedded SQLite document database and event store — is now a first-class Wolverine persistence integration, alongside Marten and Polecat.
A Fisher-backed service is zero-infrastructure: no server, no container, no network. The transactional inbox/outbox, saga storage and the full aggregate handler workflow all work, and the store-agnostic
[WriteModel]/[ReadModel]/[DeciderFunction]/[DcbModel]attributes run against it unchanged — the same handler code compiles and runs on any of the three stores.Two SQLite realities shape it, both documented:
DurabilityMode.Solo. Leader election and agent distribution need several nodes sharing one database; a Fisher store is a file.Ancillary stores work too.
AddFisherStore<T>().IntegrateWithWolverine()is supported, and[Storage(typeof(IMyStore))]routes a handler to it without naming Fisher in the consumer's source.Not in this first release, each for a reason rather than for lack of time: multi-tenancy (Fisher's tenancy is a file per tenant), cluster durability modes, and transport schema stamping (SQLite has no schemas). See Fisher Integration.
Requires Fisher 0.6.0.
New:
[DcbModel]— Dynamic Consistency Boundaries, store-agnosticThe DCB workflow joins the store-agnostic vocabulary in Wolverine core. Where
[WriteModel]is about one stream,[DcbModel]spans every stream whose events match a tag query, with the store asserting at commit that no matching event landed in the meantime.Wolverine.Marten.BoundaryModelAttributeandWolverine.Polecat.BoundaryModelAttributenow inherit from it and behave identically — existing[BoundaryModel]code needs no change. Prefer[DcbModel]in new code.[WriteModel]fixesRequirednow defaults from the parameter's nullable annotation (#3916).Order orderis required and gets a not-found guard;Order? orderis not, and is handed to your method asnullso your own null branch runs. A nullable annotation withRequired = truewas a contradiction that silently resolved in favour of the attribute default, making the handler's null branch dead code. SettingRequiredexplicitly still overrides the annotation either way.Required = trueexplicitly to keep it.[Identity]is now honoured (#3918).[DeciderFunction]always respected[Identity]on the command member;[WriteModel]did not, so the same command against the same model needed an explicit[WriteModel("...")]under one form and nothing under the other. Resolution order is now: explicit[WriteModel("orderId")], then[Identity], then{Model}Id, thenid, then a strong typed id match.Amazon SQS: oversized messages (#3926)
A message too big for SQS is no longer retried forever. SQS caps a message at 256KB and rejects a larger one with
InvalidParameterValue - Message must be shorter than 262144 bytes (SenderFault: true).SenderFault: truemeans the identical request will fail identically forever, but Wolverine treated it as a transient send failure and re-queued it — which is why this presented as a flood of identical errors rather than one. An oversized message is now logged once and discarded.... (truncated)
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)