Repository navigation
Bump the wolverine group with 5 updates - #19
Open
dependabot[bot] wants to merge 1 commit into
Open
dependabot[bot] wants to merge 1 commit into
dependabot[bot] wants to merge 1 commit into
Conversation
Bumps WolverineFx from 6.51.2 to 6.54.0 Bumps WolverineFx.AzureServiceBus from 6.51.2 to 6.54.0 Bumps WolverineFx.EntityFrameworkCore from 6.51.2 to 6.54.0 Bumps WolverineFx.RuntimeCompilation from 6.51.2 to 6.54.0 Bumps WolverineFx.SqlServer from 6.51.2 to 6.54.0 --- updated-dependencies: - dependency-name: WolverineFx dependency-version: 6.54.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: wolverine - dependency-name: WolverineFx.AzureServiceBus dependency-version: 6.54.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: wolverine - dependency-name: WolverineFx.EntityFrameworkCore dependency-version: 6.54.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: wolverine - dependency-name: WolverineFx.RuntimeCompilation dependency-version: 6.54.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: wolverine - dependency-name: WolverineFx.SqlServer dependency-version: 6.54.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: wolverine ... Signed-off-by: dependabot[bot] <support@github.com>
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.51.2 to 6.54.0.
Release notes
Sourced from WolverineFx's releases.
6.54.0
Highlights
Dead letter failure groups (#5209, #5210). Wolverine now fingerprints every message as it moves to dead letter storage, so dead letters can be managed one failure group at a time:
IDeadLetterFingerprinterhashes the exception type and the first stack frame from application code. Register your own to replace it.DeadLetterEnvelopeQuerygainsFailureGroup,ExceptionMessageMatch(Exact / Contains),TenantIdandArchived.SummarizeAllAsyncoverload groups by failure group, message type or endpoint, with first and last failure times.ReplayMatchingAsync,DiscardMatchingAsync,ArchiveMatchingAsyncandRestoreMatchingAsyncreport how many dead letters they affected.ReplayCount,LastReplayedAtandFirstFailedAt.DurabilitySettings.ArchivedDeadLetterRetention.IDeadLetters.Capabilitiestells you what a store supports.All changes are additive. The relational stores pick up seven nullable columns on
wolverine_dead_letters, an index and a newwolverine_dead_letter_historytable through the normal schema migration. See the dead letter storage guide.Deduplication fixes (#5205, #5206, #5208), and Bobcat 1.0.0-rc.4 dependency pins (#5211). The
WolverineFx.Bobcat*packages remain alpha (6.54.0-alpha.1).What's Changed
Full Changelog: JasperFx/wolverine@V6.53.0...V6.54.0
6.53.0
What's Changed
New Contributors
Full Changelog: JasperFx/wolverine@V6.52.0...V6.53.0
6.52.0
Wolverine 6.52.0 is a feature release. The headline items are Aspire-style registration by connection-string name for every transport and every message store, timer agents for short-cadence recurring schedules, and the 6.x groundwork for Wolverine 7.0's one-chain-per-handler model. There are no breaking API changes. Two behavior changes are worth knowing about up front: recurring schedules that fire more often than every 15 minutes now run on a timer agent (opt out per schedule with
UseScheduledMessages()), and outgoing envelopes a transport cannot map are dead-lettered instead of being logged and deleted.Many thanks to everyone who reported issues and sent fixes: @uniquelau, @johnkaram02, @erdtsieck, @ahmetvayhan and @pritamrao.
Aspire parity: named connections
NpgsqlDataSource/MySqlDataSourcefrom the container, named static tenants, a Named Connection Strings table indescribe, and docs that lead with the named form (GH-5127, GH-5156) by @jeremydmiller in Message storage by connection-string name for every RDBMS provider, plus named-connection docs and describe (GH-5127, GH-5156) JasperFx/wolverine#5174wolverine.slnx, with a ServiceDefaults project for traces, metrics and/health(GH-5124) by @jeremydmiller in GH-5124 Aspire samples on Aspire 13.6.3 with shared service defaults, in wolverine.slnx JasperFx/wolverine#5182Messaging and error handling
opts.Schedules.TimerThreshold(15 minutes), same dedup id as the scheduled path, pause and resume throughIRecurringScheduleControl(GH-5168) by @jeremydmiller in GH-5168 Timer-based recurring messages: one agent per short-cadence schedule JasperFx/wolverine#5183DoThenRetry(action, maxAttempts)error policy that works both inline and from a queue (GH-5068) by @jeremydmiller in GH-5068 DoThenRetry() error policy that works inline and from a queue JasperFx/wolverine#5179MultipleHandlerBehavior.ClassicCombineIntoOneLogicalHandleris[Obsolete](still the default), a startup warning for combined handlers, opt-inAssertNoCombinedHandlers(), fixes for latentSeparatedbugs, ahandler.typeOpenTelemetry tag on every chain, and logical deduplication scoped per chain (GH-5133) by @jeremydmiller in GH-5133 6.x prep for 7.0's one chain per handler type: obsolete ClassicCombine, fix latent Separated bugs, per-handler OTel tag, per-chain dedup scoping JasperFx/wolverine#5184HTTP
[DeduplicatedWithResponse]ClaimInTransaction, plus two Marten commit-failure fixes (GH-5160, GH-5165, GH-5166) by @jeremydmiller with @uniquelau in GH-5160, GH-5165, GH-5166: [DeduplicatedWithResponse] ClaimInTransaction, plus two Marten commit-failure fixes JasperFx/wolverine#5169WolverineHttpOptions.DefaultClaimInTransaction, an application-wide default (GH-5160) by @jeremydmiller in GH-5160: WolverineHttpOptions.DefaultClaimInTransaction, a global opt-in for [DeduplicatedWithResponse(ClaimInTransaction)] JasperFx/wolverine#5173Content-Length(GH-5187) by @johnkaram02 in GH-5187: a string response declares its UTF-8 byte count as Content-Length JasperFx/wolverine#5188[FromQuery]name is not a C# identifier (GH-5189) by @johnkaram02 in GH-5189: bind array and list query parameters whose [FromQuery] name is not a C# identifier JasperFx/wolverine#5190Operability and diagnostics
ServiceCapabilitiesreads each store on its own and reportsFailedSections, so a failed section is distinguishable from an empty one (GH-5162) by @jeremydmiller in GH-5162 ServiceCapabilities: isolate each store, record FailedSections JasperFx/wolverine#5175AssignmentGrid.Agent.UnplacedReason(AwaitingCapacity,NoCapableNode,Paused,TakeoverHold,Superseded), a capacity log line and an optionalNodeAcceptThreshold(GH-5163) by @jeremydmiller in GH-5163 Unplaced agents carry an UnplacedReason; leader logs agents awaiting capacity JasperFx/wolverine#5176 and GH-5163 follow-up: UnplacedReason names are a stable contract; close the null-reason gaps JasperFx/wolverine#5186DeadLetterEnvelopeQuery, honored by bulk replay and discard, across every dead letter store (GH-5164) by @jeremydmiller in GH-5164 DeadLetterEnvelopeQuery header-equality filter JasperFx/wolverine#5181db-list/db-dump/db-patchdiscover the Oracle message store (GH-5172) by @jeremydmiller in GH-5172 Oracle message store is discoverable by the Weasel db-* commands JasperFx/wolverine#5177Documentation
MaximumHopperSizeto about 2 xBatchSize(GH-5170, follow-up JasperFx/jasperfx#1076) by @jeremydmiller in Bump to 6.52.0 JasperFx/wolverine#5199Full Changelog: JasperFx/wolverine@V6.51.3...V6.52.0
6.51.3
Wolverine 6.51.3 is a durability release. Nearly everything in it came out of a run of reports against the durable inbox and outbox, plus a new durable receiver compliance rig (
src/Testing/DurableComplianceRig, Bobcat specs across PostgreSQL, SQL Server, Marten and EF Core over local, database, RabbitMQ and SQS endpoints) that turned up the rest. There are no breaking API changes; the one schema addition (a nullableenvelope_idcolumn on the deduplication table) is optional and an unmigrated table keeps working.Many thanks to everyone who reported these with reproductions: @billshuck, @dbelinsky-accureference, @endava-marinela-marchitan, @devployment, @kowalczb, @Patrick2607 and @ahmetvayhan.
Durable inbox hardening
DbTransactiondispose inMessageContext.ClearState()could kill another handler's Npgsql transactionHandledonly after its own commit, and inside the tenant transaction for database-per-tenantReScheduleAsyncand then returns normally keeps its retry[Deduplicated]claim stranded by a crash can be taken over by the same envelope (new nullableenvelope_idcolumn, opt-inIEnvelopeAwareDeduplicationStore)Envelope.DeduplicationIdnow crosses RabbitMQ, the genericEnvelopeMapperbrokers and MQTTDuplicateIncomingEnvelopeExceptioninstead of pausing the listener or tripping the tenant write brake (PostgreSQL, SQL Server, MySQL, SQLite, Oracle)x-delivery-limit(.DeliveryLimit(n),DeliveryLimitForDurableQuorumQueues(n)), a startup warning, andDeferAsyncpublishes before it acks. New docs section "Quorum Queues and the Durable Inbox"Durable bug fixes
Testing
Full Changelog: JasperFx/wolverine@V6.51.2...V6.51.3
Commits viewable in compare view.
Updated WolverineFx.AzureServiceBus from 6.51.2 to 6.54.0.
Release notes
Sourced from WolverineFx.AzureServiceBus's releases.
6.54.0
Highlights
Dead letter failure groups (#5209, #5210). Wolverine now fingerprints every message as it moves to dead letter storage, so dead letters can be managed one failure group at a time:
IDeadLetterFingerprinterhashes the exception type and the first stack frame from application code. Register your own to replace it.DeadLetterEnvelopeQuerygainsFailureGroup,ExceptionMessageMatch(Exact / Contains),TenantIdandArchived.SummarizeAllAsyncoverload groups by failure group, message type or endpoint, with first and last failure times.ReplayMatchingAsync,DiscardMatchingAsync,ArchiveMatchingAsyncandRestoreMatchingAsyncreport how many dead letters they affected.ReplayCount,LastReplayedAtandFirstFailedAt.DurabilitySettings.ArchivedDeadLetterRetention.IDeadLetters.Capabilitiestells you what a store supports.All changes are additive. The relational stores pick up seven nullable columns on
wolverine_dead_letters, an index and a newwolverine_dead_letter_historytable through the normal schema migration. See the dead letter storage guide.Deduplication fixes (#5205, #5206, #5208), and Bobcat 1.0.0-rc.4 dependency pins (#5211). The
WolverineFx.Bobcat*packages remain alpha (6.54.0-alpha.1).What's Changed
Full Changelog: JasperFx/wolverine@V6.53.0...V6.54.0
6.53.0
What's Changed
New Contributors
Full Changelog: JasperFx/wolverine@V6.52.0...V6.53.0
6.52.0
Wolverine 6.52.0 is a feature release. The headline items are Aspire-style registration by connection-string name for every transport and every message store, timer agents for short-cadence recurring schedules, and the 6.x groundwork for Wolverine 7.0's one-chain-per-handler model. There are no breaking API changes. Two behavior changes are worth knowing about up front: recurring schedules that fire more often than every 15 minutes now run on a timer agent (opt out per schedule with
UseScheduledMessages()), and outgoing envelopes a transport cannot map are dead-lettered instead of being logged and deleted.Many thanks to everyone who reported issues and sent fixes: @uniquelau, @johnkaram02, @erdtsieck, @ahmetvayhan and @pritamrao.
Aspire parity: named connections
NpgsqlDataSource/MySqlDataSourcefrom the container, named static tenants, a Named Connection Strings table indescribe, and docs that lead with the named form (GH-5127, GH-5156) by @jeremydmiller in Message storage by connection-string name for every RDBMS provider, plus named-connection docs and describe (GH-5127, GH-5156) JasperFx/wolverine#5174wolverine.slnx, with a ServiceDefaults project for traces, metrics and/health(GH-5124) by @jeremydmiller in GH-5124 Aspire samples on Aspire 13.6.3 with shared service defaults, in wolverine.slnx JasperFx/wolverine#5182Messaging and error handling
opts.Schedules.TimerThreshold(15 minutes), same dedup id as the scheduled path, pause and resume throughIRecurringScheduleControl(GH-5168) by @jeremydmiller in GH-5168 Timer-based recurring messages: one agent per short-cadence schedule JasperFx/wolverine#5183DoThenRetry(action, maxAttempts)error policy that works both inline and from a queue (GH-5068) by @jeremydmiller in GH-5068 DoThenRetry() error policy that works inline and from a queue JasperFx/wolverine#5179MultipleHandlerBehavior.ClassicCombineIntoOneLogicalHandleris[Obsolete](still the default), a startup warning for combined handlers, opt-inAssertNoCombinedHandlers(), fixes for latentSeparatedbugs, ahandler.typeOpenTelemetry tag on every chain, and logical deduplication scoped per chain (GH-5133) by @jeremydmiller in GH-5133 6.x prep for 7.0's one chain per handler type: obsolete ClassicCombine, fix latent Separated bugs, per-handler OTel tag, per-chain dedup scoping JasperFx/wolverine#5184HTTP
[DeduplicatedWithResponse]ClaimInTransaction, plus two Marten commit-failure fixes (GH-5160, GH-5165, GH-5166) by @jeremydmiller with @uniquelau in GH-5160, GH-5165, GH-5166: [DeduplicatedWithResponse] ClaimInTransaction, plus two Marten commit-failure fixes JasperFx/wolverine#5169WolverineHttpOptions.DefaultClaimInTransaction, an application-wide default (GH-5160) by @jeremydmiller in GH-5160: WolverineHttpOptions.DefaultClaimInTransaction, a global opt-in for [DeduplicatedWithResponse(ClaimInTransaction)] JasperFx/wolverine#5173Content-Length(GH-5187) by @johnkaram02 in GH-5187: a string response declares its UTF-8 byte count as Content-Length JasperFx/wolverine#5188[FromQuery]name is not a C# identifier (GH-5189) by @johnkaram02 in GH-5189: bind array and list query parameters whose [FromQuery] name is not a C# identifier JasperFx/wolverine#5190Operability and diagnostics
ServiceCapabilitiesreads each store on its own and reportsFailedSections, so a failed section is distinguishable from an empty one (GH-5162) by @jeremydmiller in GH-5162 ServiceCapabilities: isolate each store, record FailedSections JasperFx/wolverine#5175AssignmentGrid.Agent.UnplacedReason(AwaitingCapacity,NoCapableNode,Paused,TakeoverHold,Superseded), a capacity log line and an optionalNodeAcceptThreshold(GH-5163) by @jeremydmiller in GH-5163 Unplaced agents carry an UnplacedReason; leader logs agents awaiting capacity JasperFx/wolverine#5176 and GH-5163 follow-up: UnplacedReason names are a stable contract; close the null-reason gaps JasperFx/wolverine#5186DeadLetterEnvelopeQuery, honored by bulk replay and discard, across every dead letter store (GH-5164) by @jeremydmiller in GH-5164 DeadLetterEnvelopeQuery header-equality filter JasperFx/wolverine#5181db-list/db-dump/db-patchdiscover the Oracle message store (GH-5172) by @jeremydmiller in GH-5172 Oracle message store is discoverable by the Weasel db-* commands JasperFx/wolverine#5177Documentation
MaximumHopperSizeto about 2 xBatchSize(GH-5170, follow-up JasperFx/jasperfx#1076) by @jeremydmiller in Bump to 6.52.0 JasperFx/wolverine#5199Full Changelog: JasperFx/wolverine@V6.51.3...V6.52.0
6.51.3
Wolverine 6.51.3 is a durability release. Nearly everything in it came out of a run of reports against the durable inbox and outbox, plus a new durable receiver compliance rig (
src/Testing/DurableComplianceRig, Bobcat specs across PostgreSQL, SQL Server, Marten and EF Core over local, database, RabbitMQ and SQS endpoints) that turned up the rest. There are no breaking API changes; the one schema addition (a nullableenvelope_idcolumn on the deduplication table) is optional and an unmigrated table keeps working.Many thanks to everyone who reported these with reproductions: @billshuck, @dbelinsky-accureference, @endava-marinela-marchitan, @devployment, @kowalczb, @Patrick2607 and @ahmetvayhan.
Durable inbox hardening
DbTransactiondispose inMessageContext.ClearState()could kill another handler's Npgsql transactionHandledonly after its own commit, and inside the tenant transaction for database-per-tenantReScheduleAsyncand then returns normally keeps its retry[Deduplicated]claim stranded by a crash can be taken over by the same envelope (new nullableenvelope_idcolumn, opt-inIEnvelopeAwareDeduplicationStore)Envelope.DeduplicationIdnow crosses RabbitMQ, the genericEnvelopeMapperbrokers and MQTTDuplicateIncomingEnvelopeExceptioninstead of pausing the listener or tripping the tenant write brake (PostgreSQL, SQL Server, MySQL, SQLite, Oracle)x-delivery-limit(.DeliveryLimit(n),DeliveryLimitForDurableQuorumQueues(n)), a startup warning, andDeferAsyncpublishes before it acks. New docs section "Quorum Queues and the Durable Inbox"Durable bug fixes
Testing
Full Changelog: JasperFx/wolverine@V6.51.2...V6.51.3
Commits viewable in compare view.
Updated WolverineFx.EntityFrameworkCore from 6.51.2 to 6.54.0.
Release notes
Sourced from WolverineFx.EntityFrameworkCore's releases.
6.54.0
Highlights
Dead letter failure groups (#5209, #5210). Wolverine now fingerprints every message as it moves to dead letter storage, so dead letters can be managed one failure group at a time:
IDeadLetterFingerprinterhashes the exception type and the first stack frame from application code. Register your own to replace it.DeadLetterEnvelopeQuerygainsFailureGroup,ExceptionMessageMatch(Exact / Contains),TenantIdandArchived.SummarizeAllAsyncoverload groups by failure group, message type or endpoint, with first and last failure times.ReplayMatchingAsync,DiscardMatchingAsync,ArchiveMatchingAsyncandRestoreMatchingAsyncreport how many dead letters they affected.ReplayCount,LastReplayedAtandFirstFailedAt.DurabilitySettings.ArchivedDeadLetterRetention.IDeadLetters.Capabilitiestells you what a store supports.All changes are additive. The relational stores pick up seven nullable columns on
wolverine_dead_letters, an index and a newwolverine_dead_letter_historytable through the normal schema migration. See the dead letter storage guide.Deduplication fixes (#5205, #5206, #5208), and Bobcat 1.0.0-rc.4 dependency pins (#5211). The
WolverineFx.Bobcat*packages remain alpha (6.54.0-alpha.1).What's Changed
Full Changelog: JasperFx/wolverine@V6.53.0...V6.54.0
6.53.0
What's Changed
New Contributors
Full Changelog: JasperFx/wolverine@V6.52.0...V6.53.0
6.52.0
Wolverine 6.52.0 is a feature release. The headline items are Aspire-style registration by connection-string name for every transport and every message store, timer agents for short-cadence recurring schedules, and the 6.x groundwork for Wolverine 7.0's one-chain-per-handler model. There are no breaking API changes. Two behavior changes are worth knowing about up front: recurring schedules that fire more often than every 15 minutes now run on a timer agent (opt out per schedule with
UseScheduledMessages()), and outgoing envelopes a transport cannot map are dead-lettered instead of being logged and deleted.Many thanks to everyone who reported issues and sent fixes: @uniquelau, @johnkaram02, @erdtsieck, @ahmetvayhan and @pritamrao.
Aspire parity: named connections
NpgsqlDataSource/MySqlDataSourcefrom the container, named static tenants, a Named Connection Strings table indescribe, and docs that lead with the named form (GH-5127, GH-5156) by @jeremydmiller in Message storage by connection-string name for every RDBMS provider, plus named-connection docs and describe (GH-5127, GH-5156) JasperFx/wolverine#5174wolverine.slnx, with a ServiceDefaults project for traces, metrics and/health(GH-5124) by @jeremydmiller in GH-5124 Aspire samples on Aspire 13.6.3 with shared service defaults, in wolverine.slnx JasperFx/wolverine#5182Messaging and error handling
opts.Schedules.TimerThreshold(15 minutes), same dedup id as the scheduled path, pause and resume throughIRecurringScheduleControl(GH-5168) by @jeremydmiller in GH-5168 Timer-based recurring messages: one agent per short-cadence schedule JasperFx/wolverine#5183DoThenRetry(action, maxAttempts)error policy that works both inline and from a queue (GH-5068) by @jeremydmiller in GH-5068 DoThenRetry() error policy that works inline and from a queue JasperFx/wolverine#5179MultipleHandlerBehavior.ClassicCombineIntoOneLogicalHandleris[Obsolete](still the default), a startup warning for combined handlers, opt-inAssertNoCombinedHandlers(), fixes for latentSeparatedbugs, ahandler.typeOpenTelemetry tag on every chain, and logical deduplication scoped per chain (GH-5133) by @jeremydmiller in GH-5133 6.x prep for 7.0's one chain per handler type: obsolete ClassicCombine, fix latent Separated bugs, per-handler OTel tag, per-chain dedup scoping JasperFx/wolverine#5184HTTP
[DeduplicatedWithResponse]ClaimInTransaction, plus two Marten commit-failure fixes (GH-5160, GH-5165, GH-5166) by @jeremydmiller with @uniquelau in GH-5160, GH-5165, GH-5166: [DeduplicatedWithResponse] ClaimInTransaction, plus two Marten commit-failure fixes JasperFx/wolverine#5169WolverineHttpOptions.DefaultClaimInTransaction, an application-wide default (GH-5160) by @jeremydmiller in GH-5160: WolverineHttpOptions.DefaultClaimInTransaction, a global opt-in for [DeduplicatedWithResponse(ClaimInTransaction)] JasperFx/wolverine#5173Content-Length(GH-5187) by @johnkaram02 in GH-5187: a string response declares its UTF-8 byte count as Content-Length JasperFx/wolverine#5188[FromQuery]name is not a C# identifier (GH-5189) by @johnkaram02 in GH-5189: bind array and list query parameters whose [FromQuery] name is not a C# identifier JasperFx/wolverine#5190Operability and diagnostics
ServiceCapabilitiesreads each store on its own and reportsFailedSections, so a failed section is distinguishable from an empty one (GH-5162) by @jeremydmiller in GH-5162 ServiceCapabilities: isolate each store, record FailedSections JasperFx/wolverine#5175AssignmentGrid.Agent.UnplacedReason(AwaitingCapacity,NoCapableNode,Paused,TakeoverHold,Superseded), a capacity log line and an optionalNodeAcceptThreshold(GH-5163) by @jeremydmiller in GH-5163 Unplaced agents carry an UnplacedReason; leader logs agents awaiting capacity JasperFx/wolverine#5176 and GH-5163 follow-up: UnplacedReason names are a stable contract; close the null-reason gaps JasperFx/wolverine#5186DeadLetterEnvelopeQuery, honored by bulk replay and discard, across every dead letter store (GH-5164) by @jeremydmiller in GH-5164 DeadLetterEnvelopeQuery header-equality filter JasperFx/wolverine#5181db-list/db-dump/db-patchdiscover the Oracle message store (GH-5172) by @jeremydmiller in GH-5172 Oracle message store is discoverable by the Weasel db-* commands JasperFx/wolverine#5177Documentation
MaximumHopperSizeto about 2 xBatchSize(GH-5170, follow-up JasperFx/jasperfx#1076) by @jeremydmiller in Bump to 6.52.0 JasperFx/wolverine#5199Full Changelog: JasperFx/wolverine@V6.51.3...V6.52.0
6.51.3
Wolverine 6.51.3 is a durability release. Nearly everything in it came out of a run of reports against the durable inbox and outbox, plus a new durable receiver compliance rig (
src/Testing/DurableComplianceRig, Bobcat specs across PostgreSQL, SQL Server, Marten and EF Core over local, database, RabbitMQ and SQS endpoints) that turned up the rest. There are no breaking API changes; the one schema addition (a nullableenvelope_idcolumn on the deduplication table) is optional and an unmigrated table keeps working.Many thanks to everyone who reported these with reproductions: @billshuck, @dbelinsky-accureference, @endava-marinela-marchitan, @devployment, @kowalczb, @Patrick2607 and @ahmetvayhan.
Durable inbox hardening
DbTransactiondispose inMessageContext.ClearState()could kill another handler's Npgsql transactionHandledonly after its own commit, and inside the tenant transaction for database-per-tenantReScheduleAsyncand then returns normally keeps its retry[Deduplicated]claim stranded by a crash can be taken over by the same envelope (new nullableenvelope_idcolumn, opt-inIEnvelopeAwareDeduplicationStore)Envelope.DeduplicationIdnow crosses RabbitMQ, the genericEnvelopeMapperbrokers and MQTTDuplicateIncomingEnvelopeExceptioninstead of pausing the listener or tripping the tenant write brake (PostgreSQL, SQL Server, MySQL, SQLite, Oracle)x-delivery-limit(.DeliveryLimit(n),DeliveryLimitForDurableQuorumQueues(n)), a startup warning, andDeferAsyncpublishes before it acks. New docs section "Quorum Queues and the Durable Inbox"Durable bug fixes
Testing
Full Changelog: JasperFx/wolverine@V6.51.2...V6.51.3
Commits viewable in compare view.
Updated WolverineFx.RuntimeCompilation from 6.51.2 to 6.54.0.
Release notes
Sourced from WolverineFx.RuntimeCompilation's releases.
6.54.0
Highlights
Dead letter failure groups (#5209, #5210). Wolverine now fingerprints every message as it moves to dead letter storage, so dead letters can be managed one failure group at a time:
IDeadLetterFingerprinterhashes the exception type and the first stack frame from application code. Register your own to replace it.DeadLetterEnvelopeQuerygainsFailureGroup,ExceptionMessageMatch(Exact / Contains),TenantIdandArchived.SummarizeAllAsyncoverload groups by failure group, message type or endpoint, with first and last failure times.ReplayMatchingAsync,DiscardMatchingAsync,ArchiveMatchingAsyncandRestoreMatchingAsyncreport how many dead letters they affected.ReplayCount,LastReplayedAtandFirstFailedAt.DurabilitySettings.ArchivedDeadLetterRetention.IDeadLetters.Capabilitiestells you what a store supports.All changes are additive. The relational stores pick up seven nullable columns on
wolverine_dead_letters, an index and a newwolverine_dead_letter_historytable through the normal schema migration. See the dead letter storage guide.Deduplication fixes (#5205, #5206, #5208), and Bobcat 1.0.0-rc.4 dependency pins (#5211). The
WolverineFx.Bobcat*packages remain alpha (6.54.0-alpha.1).What's Changed
Full Changelog: JasperFx/wolverine@V6.53.0...V6.54.0
6.53.0
What's Changed
New Contributors
Full Changelog: JasperFx/wolverine@V6.52.0...V6.53.0
6.52.0
Wolverine 6.52.0 is a feature release. The headline items are Aspire-style registration by connection-string name for every transport and every message store, timer agents for short-cadence recurring schedules, and the 6.x groundwork for Wolverine 7.0's one-chain-per-handler model. There are no breaking API changes. Two behavior changes are worth knowing about up front: recurring schedules that fire more often than every 15 minutes now run on a timer agent (opt out per schedule with
UseScheduledMessages()), and outgoing envelopes a transport cannot map are dead-lettered instead of being logged and deleted.Many thanks to everyone who reported issues and sent fixes: @uniquelau, @johnkaram02, @erdtsieck, @ahmetvayhan and @pritamrao.
Aspire parity: named connections
NpgsqlDataSource/MySqlDataSourcefrom the container, named static tenants, a Named Connection Strings table indescribe, and docs that lead with the named form (GH-5127, GH-5156) by @jeremydmiller in Message storage by connection-string name for every RDBMS provider, plus named-connection docs and describe (GH-5127, GH-5156) JasperFx/wolverine#5174wolverine.slnx, with a ServiceDefaults project for traces, metrics and/health(GH-5124) by @jeremydmiller in GH-5124 Aspire samples on Aspire 13.6.3 with shared service defaults, in wolverine.slnx JasperFx/wolverine#5182Messaging and error handling
opts.Schedules.TimerThreshold(15 minutes), same dedup id as the scheduled path, pause and resume throughIRecurringScheduleControl(GH-5168) by @jeremydmiller in GH-5168 Timer-based recurring messages: one agent per short-cadence schedule JasperFx/wolverine#5183DoThenRetry(action, maxAttempts)error policy that works both inline and from a queue (GH-5068) by @jeremydmiller in GH-5068 DoThenRetry() error policy that works inline and from a queue JasperFx/wolverine#5179MultipleHandlerBehavior.ClassicCombineIntoOneLogicalHandleris[Obsolete](still the default), a startup warning for combined handlers, opt-inAssertNoCombinedHandlers(), fixes for latentSeparatedbugs, ahandler.typeOpenTelemetry tag on every chain, and logical deduplication scoped per chain (GH-5133) by @jeremydmiller in GH-5133 6.x prep for 7.0's one chain per handler type: obsolete ClassicCombine, fix latent Separated bugs, per-handler OTel tag, per-chain dedup scoping JasperFx/wolverine#5184HTTP
[DeduplicatedWithResponse]ClaimInTransaction, plus two Marten commit-failure fixes (GH-5160, GH-5165, GH-5166) by @jeremydmiller with @uniquelau in GH-5160, GH-5165, GH-5166: [DeduplicatedWithResponse] ClaimInTransaction, plus two Marten commit-failure fixes JasperFx/wolverine#5169WolverineHttpOptions.DefaultClaimInTransaction, an application-wide default (GH-5160) by @jeremydmiller in GH-5160: WolverineHttpOptions.DefaultClaimInTransaction, a global opt-in for [DeduplicatedWithResponse(ClaimInTransaction)] JasperFx/wolverine#5173Content-Length(GH-5187) by @johnkaram02 in GH-5187: a string response declares its UTF-8 byte count as Content-Length JasperFx/wolverine#5188[FromQuery]name is not a C# identifier (GH-5189) by @johnkaram02 in GH-5189: bind array and list query parameters whose [FromQuery] name is not a C# identifier JasperFx/wolverine#5190Operability and diagnostics
ServiceCapabilitiesreads each store on its own and reportsFailedSections, so a failed section is distinguishable from an empty one (GH-5162) by @jeremydmiller in GH-5162 ServiceCapabilities: isolate each store, record FailedSections JasperFx/wolverine#5175AssignmentGrid.Agent.UnplacedReason(AwaitingCapacity,NoCapableNode,Paused,TakeoverHold,Superseded), a capacity log line and an optionalNodeAcceptThreshold(GH-5163) by @jeremydmiller in GH-5163 Unplaced agents carry an UnplacedReason; leader logs agents awaiting capacity JasperFx/wolverine#5176 and GH-5163 follow-up: UnplacedReason names are a stable contract; close the null-reason gaps JasperFx/wolverine#5186DeadLetterEnvelopeQuery, honored by bulk replay and discard, across every dead letter store (GH-5164) by @jeremydmiller in GH-5164 DeadLetterEnvelopeQuery header-equality filter JasperFx/wolverine#5181db-list/db-dump/db-patchdiscover the Oracle message store (GH-5172) by @jeremydmiller in GH-5172 Oracle message store is discoverable by the Weasel db-* commands JasperFx/wolverine#5177Documentation
MaximumHopperSizeto about 2 xBatchSize(GH-5170, follow-up JasperFx/jasperfx#1076) by @jeremydmiller in Bump to 6.52.0 JasperFx/wolverine#5199Full Changelog: JasperFx/wolverine@V6.51.3...V6.52.0
6.51.3
Wolverine 6.51.3 is a durability release. Nearly everything in it came out of a run of reports against the durable inbox and outbox, plus a new durable receiver compliance rig (
src/Testing/DurableComplianceRig, Bobcat specs across PostgreSQL, SQL Server, Marten and EF Core over local, database, RabbitMQ and SQS endpoints) that turned up the rest. There are no breaking API changes; the one schema addition (a nullableenvelope_idcolumn on the deduplication table) is optional and an unmigrated table keeps working.Many thanks to everyone who reported these with reproductions: @billshuck, @dbelinsky-accureference, @endava-marinela-marchitan, @devployment, @kowalczb, @Patrick2607 and @ahmetvayhan.
Durable inbox hardening
DbTransactiondispose inMessageContext.ClearState()could kill another handler's Npgsql transactionHandledonly after its own commit, and inside the tenant transaction for database-per-tenantReScheduleAsyncand then returns normally keeps its retry[Deduplicated]claim stranded by a crash can be taken over by the same envelope (new nullableenvelope_idcolumn, opt-inIEnvelopeAwareDeduplicationStore)Envelope.DeduplicationIdnow crosses RabbitMQ, the genericEnvelopeMapperbrokers and MQTTDuplicateIncomingEnvelopeExceptioninstead of pausing the listener or tripping the tenant write brake (PostgreSQL, SQL Server, MySQL, SQLite, Oracle)x-delivery-limit(.DeliveryLimit(n),DeliveryLimitForDurableQuorumQueues(n)), a startup warning, andDeferAsyncpublishes before it acks. New docs section "Quorum Queues and the Durable Inbox"Durable bug fixes
Testing
Full Changelog: JasperFx/wolverine@V6.51.2...V6.51.3
Commits viewable in compare view.
Updated WolverineFx.SqlServer from 6.51.2 to 6.54.0.
Release notes
Sourced from WolverineFx.SqlServer's releases.
6.54.0
Highlights
Dead letter failure groups (#5209, #5210). Wolverine now fingerprints every message as it moves to dead letter storage, so dead letters can be managed one failure group at a time:
IDeadLetterFingerprinterhashes the exception type and the first stack frame from application code. Register your own to replace it.DeadLetterEnvelopeQuerygainsFailureGroup,ExceptionMessageMatch(Exact / Contains),TenantIdandArchived.SummarizeAllAsyncoverload groups by failure group, message type or endpoint, with first and last failure times.ReplayMatchingAsync,DiscardMatchingAsync,ArchiveMatchingAsyncandRestoreMatchingAsyncreport how many dead letters they affected.ReplayCount,LastReplayedAtandFirstFailedAt.DurabilitySettings.ArchivedDeadLetterRetention.IDeadLetters.Capabilitiestells you what a store supports.All changes are additive. The relational stores pick up seven nullable columns on
wolverine_dead_letters, an index and a newwolverine_dead_letter_historytable through the normal schema migration. See the dead letter storage guide.Deduplication fixes (#5205, #5206, #5208), and Bobcat 1.0.0-rc.4 dependency pins (#5211). The
WolverineFx.Bobcat*packages remain alpha (6.54.0-alpha.1).What's Changed
Full Changelog: JasperFx/wolverine@V6.53.0...V6.54.0
6.53.0
What's Changed
New Contributors
Full Changelog: JasperFx/wolverine@V6.52.0...V6.53.0
6.52.0
Wolverine 6.52.0 is a feature release. The headline items are Aspire-style registration by connection-string name for every transport and every message store, timer agents for short-cadence recurring schedules, and the 6.x groundwork for Wolverine 7.0's one-chain-per-handler model. There are no breaking API changes. Two behavior changes are worth knowing about up front: recurring schedules that fire more often than every 15 minutes now run on a timer agent (opt out per schedule with
UseScheduledMessages()), and outgoing envelopes a transport cannot map are dead-lettered instead of being logged and deleted.Many thanks to everyone who reported issues and sent fixes: @uniquelau, @johnkaram02, @erdtsieck, @ahmetvayhan and @pritamrao.
Aspire parity: named connections
NpgsqlDataSource/MySqlDataSourcefrom the container, named static tenants, a Named Connection Strings table indescribe, and docs that lead with the named form (GH-5127, GH-5156) by @jeremydmiller in Message storage by connection-string name for every RDBMS provider, plus named-connection docs and describe (GH-5127, GH-5156) JasperFx/wolverine#5174wolverine.slnx, with a ServiceDefaults project for traces, metrics and/health(GH-5124) by @jeremydmiller in GH-5124 Aspire samples on Aspire 13.6.3 with shared service defaults, in wolverine.slnx JasperFx/wolverine#5182Messaging and error handling
opts.Schedules.TimerThreshold(15 minutes), same dedup id as the scheduled path, pause and resume throughIRecurringScheduleControl(GH-5168) by @jeremydmiller in GH-5168 Timer-based recurring messages: one agent per short-cadence schedule JasperFx/wolverine#5183DoThenRetry(action, maxAttempts)error policy that works both inline and from a queue (GH-5068) by @jeremydmiller in GH-5068 DoThenRetry() error policy that works inline and from a queue JasperFx/wolverine#5179MultipleHandlerBehavior.ClassicCombineIntoOneLogicalHandleris[Obsolete](still the default), a startup warning for combined handlers, opt-inAssertNoCombinedHandlers(), fixes for latentSeparatedbugs, ahandler.typeOpenTelemetry tag on every chain, and logical deduplication scoped per chain (GH-5133) by @jeremydmiller in GH-5133 6.x prep for 7.0's one chain per handler type: obsolete ClassicCombine, fix latent Separated bugs, per-handler OTel tag, per-chain dedup scoping JasperFx/wolverine#5184HTTP
[DeduplicatedWithResponse]ClaimInTransaction, plus two Marten commit-failure fixes (GH-5160, GH-5165, GH-5166) by @jeremydmiller with @uniquelau in GH-5160, GH-5165, GH-5166: [DeduplicatedWithResponse] ClaimInTransaction, plus two Marten commit-failure fixes JasperFx/wolverine#5169WolverineHttpOptions.DefaultClaimInTransaction, an application-wide default (GH-5160) by @jeremydmiller in GH-5160: WolverineHttpOptions.DefaultClaimInTransaction, a global opt-in for [DeduplicatedWithResponse(ClaimInTransaction)] JasperFx/wolverine#5173Content-Length(GH-5187) by @johnkaram02 in GH-5187: a string response declares its UTF-8 byte count as Content-Length JasperFx/wolverine#5188[FromQuery]name is not a C# identifier (GH-5189) by @johnkaram02 in GH-5189: bind array and list query parameters whose [FromQuery] name is not a C# identifier JasperFx/wolverine#5190Operability and diagnostics
ServiceCapabilitiesreads each store on its own and reportsFailedSections, so a failed section is distinguishable from an empty one (GH-5162) by @jeremydmiller in GH-5162 ServiceCapabilities: isolate each store, record FailedSections JasperFx/wolverine#5175AssignmentGrid.Agent.UnplacedReason(AwaitingCapacity,NoCapableNode,Paused,TakeoverHold,Superseded), a capacity log line and an optionalNodeAcceptThreshold(GH-5163) by @jeremydmiller in GH-5163 Unplaced agents carry an UnplacedReason; leader logs agents awaiting capacity JasperFx/wolverine#5176 and GH-5163 follow-up: UnplacedReason names are a stable contract; close the null-reason gaps JasperFx/wolverine#5186DeadLetterEnvelopeQuery, honored by bulk replay and discard, across every dead letter store (GH-5164) by @jeremydmiller in GH-5164 DeadLetterEnvelopeQuery header-equality filter JasperFx/wolverine#5181db-list/db-dump/db-patchdiscover the Oracle message store (GH-5172) by @jeremydmiller in GH-5172 Oracle message store is discoverable by the Weasel db-* commands JasperFx/wolverine#5177Documentation
MaximumHopperSizeto about 2 xBatchSize(GH-5170, follow-up JasperFx/jasperfx#1076) by @jeremydmiller in Bump to 6.52.0 JasperFx/wolverine#5199Full Changelog: JasperFx/wolverine@V6.51.3...V6.52.0
6.51.3
Wolverine 6.51.3 is a durability release. Nearly everything in it came out of a run of reports against the durable inbox and outbox, plus a new durable receiver compliance rig (
src/Testing/DurableComplianceRig, Bobcat specs across PostgreSQL, SQL Server, Marten and EF Core over local, database, RabbitMQ and SQS endpoints) that turned up the rest. There are no breaking API changes; the one schema addition (a nullableenvelope_idcolumn on the deduplication table) is optional and an unmigrated table keeps working.Many thanks to everyone who reported these with reproductions: @billshuck, @dbelinsky-accureference, @endava-marinela-marchitan, @devployment, @kowalczb, @Patrick2607 and @ahmetvayhan.
Durable inbox hardening
DbTransactiondispose inMessageContext.ClearState()could kill another handler's Npgsql transactionHandledonly after its own commit, and inside the tenant transaction for database-per-tenantReScheduleAsyncand then returns normally keeps its retry[Deduplicated]claim stranded by a crash can be taken over by the same envelope (new nullableenvelope_idcolumn, opt-inIEnvelopeAwareDeduplicationStore)Envelope.DeduplicationIdnow crosses RabbitMQ, the genericEnvelopeMapperbrokers and MQTTDuplicateIncomingEnvelopeExceptioninstead of pausing the listener or tripping the tenant write brake (PostgreSQL, SQL Server, MySQL, SQLite, Oracle)x-delivery-limit(.DeliveryLimit(n),DeliveryLimitForDurableQuorumQueues(n)), a startup warning, andDeferAsyncpublishes before it acks. New docs section "Quorum Queues and the Durable Inbox"Durable bug fixes
Testing
Full Changelog: JasperFx/wolverine@V6.51.2...V6.51.3
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 <dependency name> major versionwill close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)@dependabot ignore <dependency name> minor versionwill close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)@dependabot ignore <dependency name>will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)@dependabot unignore <dependency name>will remove all of the ignore conditions of the specified dependency@dependabot unignore <dependency name> <ignore condition>will remove the ignore condition of the specified dependency and ignore conditions