Conversation
Contributor
Author
LabelsThe following labels could not be found: Please fix the above issues or remove invalid values from |
2 tasks
lucasidev
added a commit
that referenced
this pull request
May 1, 2026
Dependabot genera PR titles con la primera letra del subject capitalizada (ej. "Bump the backend-minor-patch group with 8 updates"), lo cual rompe nuestro subjectPattern `^(?![A-Z]).+$` de pr-title.yml. Falsos negativos en los 3 backend Dependabot PRs (#39, #40, #41) lo evidenciaron. Los commits internos de Dependabot SÍ siguen Conventional Commits ("build(deps): bump foo from X to Y"), así que pasan commits.yml y alimentan changelog.yml correctamente. Sólo el PR title display difiere. Skipear el actor dependabot[bot] mantiene la regla estricta para PRs humanas (donde el title se vuelve commit en Squash y queremos que sea CC válido) y evita el falso negativo en bots.
Owner
|
@dependabot rebase |
3 tasks
lucasidev
added a commit
that referenced
this pull request
May 1, 2026
PR #43 intentó skipear pr-title.yml para Dependabot usando `github.actor != 'dependabot[bot]'`. No funcionó: en re-runs (via @dependabot rebase comment), github.actor parece quedar con el initiator del comment, no con el bot. Los runs de #39, #40, #41 siguieron fallando incluso después del rebase. Fix: chequear `github.event.pull_request.user.login` que es el creador del PR, invariante a re-runs/rebases. Para Dependabot PRs ese campo siempre es 'dependabot[bot]'. Verificable en logs de PR #40 run 25201147028: el job ejecutó (no se skipeó), confirmando que la condición github.actor evaluó a true.
Owner
|
@dependabot rebase |
Owner
|
@dependabot recreate |
Bumps Microsoft.AspNetCore.Authentication.JwtBearer from 10.0.0 to 10.0.7 Bumps Microsoft.AspNetCore.Mvc.Testing from 10.0.0 to 10.0.7 Bumps StackExchange.Redis from 2.8.16 to 2.12.14 Bumps System.IdentityModel.Tokens.Jwt from 8.17.0 to 8.18.0 Bumps WolverineFx from 5.32.1 to 5.35.2 Bumps WolverineFx.EntityFrameworkCore from 5.32.1 to 5.35.2 Bumps WolverineFx.FluentValidation from 5.32.1 to 5.35.2 Bumps WolverineFx.Postgresql from 5.32.1 to 5.35.2 --- updated-dependencies: - dependency-name: Microsoft.AspNetCore.Authentication.JwtBearer dependency-version: 10.0.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: backend-minor-patch - dependency-name: Microsoft.AspNetCore.Mvc.Testing dependency-version: 10.0.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: backend-minor-patch - dependency-name: StackExchange.Redis dependency-version: 2.12.14 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: backend-minor-patch - dependency-name: System.IdentityModel.Tokens.Jwt dependency-version: 8.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: backend-minor-patch - dependency-name: WolverineFx dependency-version: 5.35.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: backend-minor-patch - dependency-name: WolverineFx.EntityFrameworkCore dependency-version: 5.35.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: backend-minor-patch - dependency-name: WolverineFx.FluentValidation dependency-version: 5.35.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: backend-minor-patch - dependency-name: WolverineFx.Postgresql dependency-version: 5.35.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: backend-minor-patch ... Signed-off-by: dependabot[bot] <support@github.com>
7d32f51 to
c417ee6
Compare
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 Microsoft.AspNetCore.Authentication.JwtBearer from 10.0.0 to 10.0.7.
Release notes
Sourced from Microsoft.AspNetCore.Authentication.JwtBearer's releases.
No release notes found for this version range.
Commits viewable in compare view.
Updated Microsoft.AspNetCore.Mvc.Testing from 10.0.0 to 10.0.7.
Release notes
Sourced from Microsoft.AspNetCore.Mvc.Testing's releases.
No release notes found for this version range.
Commits viewable in compare view.
Updated StackExchange.Redis from 2.8.16 to 2.12.14.
Release notes
Sourced from StackExchange.Redis's releases.
No release notes found for this version range.
Commits viewable in compare view.
Pinned System.IdentityModel.Tokens.Jwt at 8.18.0.
Release notes
Sourced from System.IdentityModel.Tokens.Jwt's releases.
No release notes found for this version range.
Commits viewable in compare view.
Updated WolverineFx from 5.32.1 to 5.35.2.
Release notes
Sourced from WolverineFx's releases.
5.35.2
What's Changed
A small bug-fix and dependency-refresh release.
Persistence fixes
OracleMessageStore.Initializeand the surrounding schema declared timestamp columns (health_check,started,posted, etc.) with a DEFAULT ofSYS_EXTRACT_UTC(SYSTIMESTAMP). That returns a TIMESTAMP without a time zone, and when implicitly cast into theTIMESTAMP WITH TIME ZONEcolumn Oracle stamps it with the session time zone — so for any session in UTC+N the just-persisted value's UTC equivalent was N hours in the past. That tripped theNodeAgentController.DoHealthChecksAsyncstaleness filter and surfaced as aNullReferenceExceptionduring the first leadership-election heartbeat (self!.AssignAgents([LeaderUri])on anullself). All 18 occurrences swapped toSYSTIMESTAMP AT TIME ZONE 'UTC', with quote-doubling for the DDL contexts that go through Weasel'sEXECUTE IMMEDIATE '...'wrapper.Reliability hardening
dbcontrol://andoraclecontrol://endpoints toBufferedInMemory(#2637) — the database-backed control transport carries inter-node leader-election and agent-reassignment commands. Marking either endpoint Durable would route every control envelope through the same store-backed inbox/outbox the durability agent itself owns (deadlock); marking it Inline contradicts the batched-poll semantics. BothDatabaseControlEndpointandOracleControlEndpointnow overridesupportsModeso any policy that tries to flip them offBufferedInMemoryeither silently skips (UseDurableInboxOnAllListeners,UseDurableOutboxOnAllSendingEndpoints, etc., already checkSupportsMode) or fails fast with a clearInvalidOperationException.Source-gen / startup
IWolverineTypeLoaderacross all known assemblies (#2632) by @devployment — since 5.34.0, hosts on the source-generated codegen path silently dropped handlers that lived in referenced assemblies becausetryDiscoverTypeLoaderFromAttributeonly inspectedOptions.ApplicationAssembly. First invocation of one of those handlers threwIndeterminateRoutesException. The runtime now walksApplicationAssemblyand every assembly inDiscovery.Assemblies, collects every[WolverineTypeManifest]loader it finds, and exposes their union via the new internalCompositeWolverineTypeLoader. Existing single-loader semantics are preserved when only one manifest is found.Other
Dependencies
Full Changelog: JasperFx/wolverine@V5.35.1...V5.35.2
5.35.1
What's Changed
A bug-fix and small-feature release covering Oracle-in-Balanced-mode startup, a duplicate-poller defect on RavenDb, an AWS SQS sharded-slot naming fix, and a new SagaDescriptor surface for CritterWatch.
Persistence fixes
Oracle in
DurabilityMode.Balancednow boots (#2622) —OracleMessageStore.Initializewas a no-op, so hosts using Oracle persistence in Balanced mode failed to start withArgumentOutOfRangeException("ControlEndpoint cannot be null for this usage"). The fix mirrorsMessageDatabase.Initializefor Oracle and stands up a parallelOracleControlTransport/OracleControlEndpoint/OracleControlSender/OracleControlListenerset under the neworaclecontrol://protocol — necessary because the sharedDatabaseControlSender/DatabaseControlListenerassume@-prefixed placeholders and Guid values that map directly onto aDbParameter, neither of which Oracle accepts (:-prefixed placeholders,RAW(16)id columns requiringbyte[]). Also fixes a latentOracleMessageStore.EnqueueAsyncno-op that leftLogRecordsAsyncsilently dropping node records, and makesFetchRecentRecordsAsyncDBNull-safe on the description column. Adds a newOracleTests.LeaderElectionproject so the leadership-compliance suite runs against Oracle (marked[Trait("Category","Flaky")]because the suite needs careful TM/DML lock sequencing between back-to-back runs).RavenDb: only one durability agent polls after host start (#2623, #2629) by @Bishbulb (root-cause investigation and original fix) and @jeremydmiller —
RavenDbMessageStore.StartScheduledJobseagerly built and started aRavenDbDurabilityAgentat boot in addition to the agent thatNodeAgentControlleralready builds and starts viaIAgentFamily/MessageStoreCollection. TwoRavenDbDurabilityAgentinstances then polled the same database concurrently, both believed they held the scheduled-job lock, raced to mark the same envelopesIncoming, and surfacedConcurrencyExceptionplus double-fired timeouts. Drops the eagerStartTimers()call; the cluster-managed agent is now the single owner of polling. The agent returned fromStartScheduledJobsis held byWolverineRuntime.DurableScheduledJobspurely for its disposal-timeStopAsync. Comes with a reflection-free regression test (addedRavenDbDurabilityAgent.IsPollingandCompositeAgent.InnerAgentsfor the test to enumerate without poking at private fields). A companion regression-guard test for CosmosDb is included; investigation showed the equivalent CosmosDb path does NOT have the bug today (CosmosDbMessageStore.BuildAgentFamilyreturns null andUriuses thecosmosdb://scheme rather thanwolverinedb://, soMessageStoreCollectionnever registers a competing agent).Other improvements
AWS SQS: correct naming for sharded slot endpoints in #1f294ce5 — fixes a regression where sharded slot endpoint URIs were assembled with the wrong segment ordering, causing the consumer side to listen at the wrong queue.
SagaDescriptorexported viaServiceCapabilitiesin #f0998c7b — adds a saga-shape descriptor (saga type, id type, current state) to the capabilities exporter so CritterWatch can surface saga inventory and current state in its dashboard.Full Changelog: JasperFx/wolverine@V5.34.0...V5.35.1
5.34.0
What's Changed
This release introduces three new features (Claim Check pattern, declarative Polecat data requirements, and a new opt-in
WolverineFx.RuntimeCompilationpackage as the first step toward AOT compatibility), a fix for a long-standing service-location footgun, several real RavenDB and EF Core durability fixes, plus the cold-start prep work done as part of issue #1577.Highlights
[Blob]attribute (#2412) by @jeremydmiller in #2617 — off-load large message-property payloads to external storage on send and re-hydrate them on receive, so the on-the-wire envelope stays small. Core abstractions (IClaimCheckStore,ClaimCheckToken,[Blob],FileSystemClaimCheckStore,opts.UseClaimCheck(...)) live inWolverine.Persistence. Two new backend NuGet packages ship alongside:WolverineFx.ClaimCheck.AzureBlobStorageandWolverineFx.ClaimCheck.AmazonS3. New documentation page under/guide/durability/claim-checks.[DocumentExists<T>],[DocumentDoesNotExist<T>], andPolecatOps.Document<T>().MustExist(...)/.MustNotExist(...)mirror the Marten ergonomics, with the same batch-query optimization that folds multiple existence checks into a single PolecatIBatchedQueryround-trip.IMessageBus/IMessageContextnow see the active context (#2583) by @jeremydmiller in #2616 — when user code service-locatesIMessageBus(e.g., constructor injection on a service the handler resolves at runtime), it now receives the sameMessageContextthe handler itself uses, preserving outbox semantics. Implemented as a per-chain opt-in (gated onChain.UsesServiceLocation) so chains that don't service-locate pay zeroAsyncLocaloverhead per message.WolverineFx.RuntimeCompilationopt-in package (#1577) by @jeremydmiller in #2613 and #cc00ca0a — first pass at the cold-start / AOT roadmap. Wires theWolverine.SourceGenerationanalyzer into theWolverineFxNuGet output (so source-generatedIWolverineTypeLoaderdiscovery flows transitively to consumers), pre-populates theWolverineMessageNamingcache during startup to eliminate first-message reflection cost, applies[DynamicallyAccessedMembers]annotations on theActivator.CreateInstancecall sites for trimmer-friendliness, and addsConfigureAwait(false)across 117 awaits on the per-message hot path. The newWolverineFx.RuntimeCompilationpackage becomes the future-facing opt-in API for runtime Roslyn compilation; default behavior is preserved.RavenDB durability fixes
EF Core / ancillary stores
DurableLocalQueueto route incoming envelopes to ancillary stores (#2611) by @jeremydmiller — handler chains targeting an ancillary message store now have their incoming envelopes persisted in that store rather than the main store, fixing a class of "envelope stuck as Incoming forever" bugs.WolverineEnabledannotation collision in ancillary-store EF Core scenarios as part of #2618 —MapWolverineEnvelopeStorageis now idempotent when called against the same model graph more than once.Other improvements
MessageBusclobbering per-messageEnvelope.Sourcein #26e38002 —MessageBus.Sendwas overwriting the per-messageSourcewith the host'sServiceName, masking the originating service in causation tracking.ServiceLocationPolicy.NotAllowedv6 default (#2584) by @jeremydmiller in #2609 — chains that resolve dependencies via service location now log a warning at codegen time, with a clear migration path to the new opt-inWolverine.RuntimeCompilationstory for v6.CI stabilization
IDisposable→IAsyncLifetimeconversions, lifecycle cleanup; chronically broken-on-CI classes (SqliteTests.Transport.multi_tenancy_with_multiple_files,CosmosDbTests.LeaderElection.leader_election,Wolverine.RabbitMQ.Tests.send_by_topics,Wolverine.RabbitMQ.Tests.sending_raw_messages) tagged[Trait("Category", "Flaky")]with header comments documenting the symptom and the real follow-up fix.JasperFx.CodeGenerationandJasperFx.RuntimeCompilernow compile cleanly after theInitializeSynchronouslyextension method was moved intoJasperFx.CodeGenerationupstream.Issue-tracker housekeeping
#2507(Quartz.Net / TickerQ first-class integration) added to the 6.0 milestone with a phased plan documented on the issue.#1577(cold-start optimization roadmap) updated with a six-phase plan and current-state checklist; phases 1–4 are non-breaking on v5.x and largely landed in this release.Full Changelog: JasperFx/wolverine@V5.33.0...V5.34.0
5.33.0
What's Changed
This release includes a major reliability fix for distributed leader election, a port of the Polecat 2.x event store integration, and several other quality-of-life improvements.
Highlights
LeadershipLostnode record type and anIWolverineObserver.LostLeadership()hook for monitoring.JSONtype.Other Improvements
launchSettings.jsonto sample projects by @jeremydmiller in #2600Full Changelog: JasperFx/wolverine@V5.32.1...V5.33.0
What's Changed
New Contributors
Full Changelog: JasperFx/wolverine@V5.32.1...V5.33.0
Commits viewable in compare view.
Updated WolverineFx.EntityFrameworkCore from 5.32.1 to 5.35.2.
Release notes
Sourced from WolverineFx.EntityFrameworkCore's releases.
5.35.2
What's Changed
A small bug-fix and dependency-refresh release.
Persistence fixes
OracleMessageStore.Initializeand the surrounding schema declared timestamp columns (health_check,started,posted, etc.) with a DEFAULT ofSYS_EXTRACT_UTC(SYSTIMESTAMP). That returns a TIMESTAMP without a time zone, and when implicitly cast into theTIMESTAMP WITH TIME ZONEcolumn Oracle stamps it with the session time zone — so for any session in UTC+N the just-persisted value's UTC equivalent was N hours in the past. That tripped theNodeAgentController.DoHealthChecksAsyncstaleness filter and surfaced as aNullReferenceExceptionduring the first leadership-election heartbeat (self!.AssignAgents([LeaderUri])on anullself). All 18 occurrences swapped toSYSTIMESTAMP AT TIME ZONE 'UTC', with quote-doubling for the DDL contexts that go through Weasel'sEXECUTE IMMEDIATE '...'wrapper.Reliability hardening
dbcontrol://andoraclecontrol://endpoints toBufferedInMemory(#2637) — the database-backed control transport carries inter-node leader-election and agent-reassignment commands. Marking either endpoint Durable would route every control envelope through the same store-backed inbox/outbox the durability agent itself owns (deadlock); marking it Inline contradicts the batched-poll semantics. BothDatabaseControlEndpointandOracleControlEndpointnow overridesupportsModeso any policy that tries to flip them offBufferedInMemoryeither silently skips (UseDurableInboxOnAllListeners,UseDurableOutboxOnAllSendingEndpoints, etc., already checkSupportsMode) or fails fast with a clearInvalidOperationException.Source-gen / startup
IWolverineTypeLoaderacross all known assemblies (#2632) by @devployment — since 5.34.0, hosts on the source-generated codegen path silently dropped handlers that lived in referenced assemblies becausetryDiscoverTypeLoaderFromAttributeonly inspectedOptions.ApplicationAssembly. First invocation of one of those handlers threwIndeterminateRoutesException. The runtime now walksApplicationAssemblyand every assembly inDiscovery.Assemblies, collects every[WolverineTypeManifest]loader it finds, and exposes their union via the new internalCompositeWolverineTypeLoader. Existing single-loader semantics are preserved when only one manifest is found.Other
Dependencies
Full Changelog: JasperFx/wolverine@V5.35.1...V5.35.2
5.35.1
What's Changed
A bug-fix and small-feature release covering Oracle-in-Balanced-mode startup, a duplicate-poller defect on RavenDb, an AWS SQS sharded-slot naming fix, and a new SagaDescriptor surface for CritterWatch.
Persistence fixes
Oracle in
DurabilityMode.Balancednow boots (#2622) —OracleMessageStore.Initializewas a no-op, so hosts using Oracle persistence in Balanced mode failed to start withArgumentOutOfRangeException("ControlEndpoint cannot be null for this usage"). The fix mirrorsMessageDatabase.Initializefor Oracle and stands up a parallelOracleControlTransport/OracleControlEndpoint/OracleControlSender/OracleControlListenerset under the neworaclecontrol://protocol — necessary because the sharedDatabaseControlSender/DatabaseControlListenerassume@-prefixed placeholders and Guid values that map directly onto aDbParameter, neither of which Oracle accepts (:-prefixed placeholders,RAW(16)id columns requiringbyte[]). Also fixes a latentOracleMessageStore.EnqueueAsyncno-op that leftLogRecordsAsyncsilently dropping node records, and makesFetchRecentRecordsAsyncDBNull-safe on the description column. Adds a newOracleTests.LeaderElectionproject so the leadership-compliance suite runs against Oracle (marked[Trait("Category","Flaky")]because the suite needs careful TM/DML lock sequencing between back-to-back runs).RavenDb: only one durability agent polls after host start (#2623, #2629) by @Bishbulb (root-cause investigation and original fix) and @jeremydmiller —
RavenDbMessageStore.StartScheduledJobseagerly built and started aRavenDbDurabilityAgentat boot in addition to the agent thatNodeAgentControlleralready builds and starts viaIAgentFamily/MessageStoreCollection. TwoRavenDbDurabilityAgentinstances then polled the same database concurrently, both believed they held the scheduled-job lock, raced to mark the same envelopesIncoming, and surfacedConcurrencyExceptionplus double-fired timeouts. Drops the eagerStartTimers()call; the cluster-managed agent is now the single owner of polling. The agent returned fromStartScheduledJobsis held byWolverineRuntime.DurableScheduledJobspurely for its disposal-timeStopAsync. Comes with a reflection-free regression test (addedRavenDbDurabilityAgent.IsPollingandCompositeAgent.InnerAgentsfor the test to enumerate without poking at private fields). A companion regression-guard test for CosmosDb is included; investigation showed the equivalent CosmosDb path does NOT have the bug today (CosmosDbMessageStore.BuildAgentFamilyreturns null andUriuses thecosmosdb://scheme rather thanwolverinedb://, soMessageStoreCollectionnever registers a competing agent).Other improvements
AWS SQS: correct naming for sharded slot endpoints in #1f294ce5 — fixes a regression where sharded slot endpoint URIs were assembled with the wrong segment ordering, causing the consumer side to listen at the wrong queue.
SagaDescriptorexported viaServiceCapabilitiesin #f0998c7b — adds a saga-shape descriptor (saga type, id type, current state) to the capabilities exporter so CritterWatch can surface saga inventory and current state in its dashboard.Full Changelog: JasperFx/wolverine@V5.34.0...V5.35.1
5.34.0
What's Changed
This release introduces three new features (Claim Check pattern, declarative Polecat data requirements, and a new opt-in
WolverineFx.RuntimeCompilationpackage as the first step toward AOT compatibility), a fix for a long-standing service-location footgun, several real RavenDB and EF Core durability fixes, plus the cold-start prep work done as part of issue #1577.Highlights
[Blob]attribute (#2412) by @jeremydmiller in #2617 — off-load large message-property payloads to external storage on send and re-hydrate them on receive, so the on-the-wire envelope stays small. Core abstractions (IClaimCheckStore,ClaimCheckToken,[Blob],FileSystemClaimCheckStore,opts.UseClaimCheck(...)) live inWolverine.Persistence. Two new backend NuGet packages ship alongside:WolverineFx.ClaimCheck.AzureBlobStorageandWolverineFx.ClaimCheck.AmazonS3. New documentation page under/guide/durability/claim-checks.[DocumentExists<T>],[DocumentDoesNotExist<T>], andPolecatOps.Document<T>().MustExist(...)/.MustNotExist(...)mirror the Marten ergonomics, with the same batch-query optimization that folds multiple existence checks into a single PolecatIBatchedQueryround-trip.IMessageBus/IMessageContextnow see the active context (#2583) by @jeremydmiller in #2616 — when user code service-locatesIMessageBus(e.g., constructor injection on a service the handler resolves at runtime), it now receives the sameMessageContextthe handler itself uses, preserving outbox semantics. Implemented as a per-chain opt-in (gated onChain.UsesServiceLocation) so chains that don't service-locate pay zeroAsyncLocaloverhead per message.WolverineFx.RuntimeCompilationopt-in package (#1577) by @jeremydmiller in #2613 and #cc00ca0a — first pass at the cold-start / AOT roadmap. Wires theWolverine.SourceGenerationanalyzer into theWolverineFxNuGet output (so source-generatedIWolverineTypeLoaderdiscovery flows transitively to consumers), pre-populates theWolverineMessageNamingcache during startup to eliminate first-message reflection cost, applies[DynamicallyAccessedMembers]annotations on theActivator.CreateInstancecall sites for trimmer-friendliness, and addsConfigureAwait(false)across 117 awaits on the per-message hot path. The newWolverineFx.RuntimeCompilationpackage becomes the future-facing opt-in API for runtime Roslyn compilation; default behavior is preserved.RavenDB durability fixes
EF Core / ancillary stores
DurableLocalQueueto route incoming envelopes to ancillary stores (#2611) by @jeremydmiller — handler chains targeting an ancillary message store now have their incoming envelopes persisted in that store rather than the main store, fixing a class of "envelope stuck as Incoming forever" bugs.WolverineEnabledannotation collision in ancillary-store EF Core scenarios as part of #2618 —MapWolverineEnvelopeStorageis now idempotent when called against the same model graph more than once.Other improvements
MessageBusclobbering per-messageEnvelope.Sourcein #26e38002 —MessageBus.Sendwas overwriting the per-messageSourcewith the host'sServiceName, masking the originating service in causation tracking.ServiceLocationPolicy.NotAllowedv6 default (#2584) by @jeremydmiller in #2609 — chains that resolve dependencies via service location now log a warning at codegen time, with a clear migration path to the new opt-inWolverine.RuntimeCompilationstory for v6.CI stabilization
IDisposable→IAsyncLifetimeconversions, lifecycle cleanup; chronically broken-on-CI classes (SqliteTests.Transport.multi_tenancy_with_multiple_files,CosmosDbTests.LeaderElection.leader_election,Wolverine.RabbitMQ.Tests.send_by_topics,Wolverine.RabbitMQ.Tests.sending_raw_messages) tagged[Trait("Category", "Flaky")]with header comments documenting the symptom and the real follow-up fix.JasperFx.CodeGenerationandJasperFx.RuntimeCompilernow compile cleanly after theInitializeSynchronouslyextension method was moved intoJasperFx.CodeGenerationupstream.Issue-tracker housekeeping
#2507(Quartz.Net / TickerQ first-class integration) added to the 6.0 milestone with a phased plan documented on the issue.#1577(cold-start optimization roadmap) updated with a six-phase plan and current-state checklist; phases 1–4 are non-breaking on v5.x and largely landed in this release.Full Changelog: JasperFx/wolverine@V5.33.0...V5.34.0
5.33.0
What's Changed
This release includes a major reliability fix for distributed leader election, a port of the Polecat 2.x event store integration, and several other quality-of-life improvements.
Highlights
LeadershipLostnode record type and anIWolverineObserver.LostLeadership()hook for monitoring.JSONtype.Other Improvements
launchSettings.jsonto sample projects by @jeremydmiller in #2600Full Changelog: JasperFx/wolverine@V5.32.1...V5.33.0
What's Changed
New Contributors
Full Changelog: JasperFx/wolverine@V5.32.1...V5.33.0
Commits viewable in compare view.
Updated WolverineFx.FluentValidation from 5.32.1 to 5.35.2.
Release notes
Sourced from WolverineFx.FluentValidation's releases.
5.35.2
What's Changed
A small bug-fix and dependency-refresh release.
Persistence fixes
OracleMessageStore.Initializeand the surrounding schema declared timestamp columns (health_check,started,posted, etc.) with a DEFAULT ofSYS_EXTRACT_UTC(SYSTIMESTAMP). That returns a TIMESTAMP without a time zone, and when implicitly cast into theTIMESTAMP WITH TIME ZONEcolumn Oracle stamps it with the session time zone — so for any session in UTC+N the just-persisted value's UTC equivalent was N hours in the past. That tripped theNodeAgentController.DoHealthChecksAsyncstaleness filter and surfaced as aNullReferenceExceptionduring the first leadership-election heartbeat (self!.AssignAgents([LeaderUri])on anullself). All 18 occurrences swapped toSYSTIMESTAMP AT TIME ZONE 'UTC', with quote-doubling for the DDL contexts that go through Weasel'sEXECUTE IMMEDIATE '...'wrapper.Reliability hardening
dbcontrol://andoraclecontrol://endpoints toBufferedInMemory(#2637) — the database-backed control transport carries inter-node leader-election and agent-reassignment commands. Marking either endpoint Durable would route every control envelope through the same store-backed inbox/outbox the durability agent itself owns (deadlock); marking it Inline contradicts the batched-poll semantics. BothDatabaseControlEndpointandOracleControlEndpointnow overridesupportsModeso any policy that tries to flip them offBufferedInMemoryeither silently skips (UseDurableInboxOnAllListeners,UseDurableOutboxOnAllSendingEndpoints, etc., already checkSupportsMode) or fails fast with a clearInvalidOperationException.Source-gen / startup
IWolverineTypeLoaderacross all known assemblies (#2632) by @devployment — since 5.34.0, hosts on the source-generated codegen path silently dropped handlers that lived in referenced assemblies becausetryDiscoverTypeLoaderFromAttributeonly inspectedOptions.ApplicationAssembly. First invocation of one of those handlers threwIndeterminateRoutesException. The runtime now walksApplicationAssemblyand every assembly inDiscovery.Assemblies, collects every[WolverineTypeManifest]loader it finds, and exposes their union via the new internalCompositeWolverineTypeLoader. Existing single-loader semantics are preserved when only one manifest is found.Other
Dependencies
Full Changelog: JasperFx/wolverine@V5.35.1...V5.35.2
5.35.1
What's Changed
A bug-fix and small-feature release covering Oracle-in-Balanced-mode startup, a duplicate-poller defect on RavenDb, an AWS SQS sharded-slot naming fix, and a new SagaDescriptor surface for CritterWatch.
Persistence fixes
Oracle in
DurabilityMode.Balancednow boots (#2622) —OracleMessageStore.Initializewas a no-op, so hosts using Oracle persistence in Balanced mode failed to start withArgumentOutOfRangeException("ControlEndpoint cannot be null for this usage"). The fix mirrorsMessageDatabase.Initializefor Oracle and stands up a parallelOracleControlTransport/OracleControlEndpoint/OracleControlSender/OracleControlListenerset under the neworaclecontrol://protocol — necessary because the sharedDatabaseControlSender/DatabaseControlListenerassume@-prefixed placeholders and Guid values that map directly onto aDbParameter, neither of which Oracle accepts (:-prefixed placeholders,RAW(16)id columns requiringbyte[]). Also fixes a latentOracleMessageStore.EnqueueAsyncno-op that leftLogRecordsAsyncsilently dropping node records, and makesFetchRecentRecordsAsyncDBNull-safe on the description column. Adds a newOracleTests.LeaderElectionproject so the leadership-compliance suite runs against Oracle (marked[Trait("Category","Flaky")]because the suite needs careful TM/DML lock sequencing between back-to-back runs).RavenDb: only one durability agent polls after host start (#2623, #2629) by @Bishbulb (root-cause investigation and original fix) and @jeremydmiller —
RavenDbMessageStore.StartScheduledJobseagerly built and started aRavenDbDurabilityAgentat boot in addition to the agent thatNodeAgentControlleralready builds and starts viaIAgentFamily/MessageStoreCollection. TwoRavenDbDurabilityAgentinstances then polled the same database concurrently, both believed they held the scheduled-job lock, raced to mark the same envelopesIncoming, and surfacedConcurrencyExceptionplus double-fired timeouts. Drops the eagerStartTimers()call; the cluster-managed agent is now the single owner of polling. The agent returned fromStartScheduledJobsis held byWolverineRuntime.DurableScheduledJobspurely for its disposal-timeStopAsync. Comes with a reflection-free regression test (addedRavenDbDurabilityAgent.IsPollingandCompositeAgent.InnerAgentsfor the test to enumerate without poking at private fields). A companion regression-guard test for CosmosDb is included; investigation showed the equivalent CosmosDb path does NOT have the bug today (CosmosDbMessageStore.BuildAgentFamilyreturns null andUriuses thecosmosdb://scheme rather thanwolverinedb://, soMessageStoreCollectionnever registers a competing agent).Other improvements
AWS SQS: correct naming for sharded slot endpoints in #1f294ce5 — fixes a regression where sharded slot endpoint URIs were assembled with the wrong segment ordering, causing the consumer side to listen at the wrong queue.
SagaDescriptorexported viaServiceCapabilitiesin #f0998c7b — adds a saga-shape descriptor (saga type, id type, current state) to the capabilities exporter so CritterWatch can surface saga inventory and current state in its dashboard.Full Changelog: JasperFx/wolverine@V5.34.0...V5.35.1
5.34.0
What's Changed
This release introduces three new features (Claim Check pattern, declarative Polecat data requirements, and a new opt-in
WolverineFx.RuntimeCompilationpackage as the first step toward AOT compatibility), a fix for a long-standing service-location footgun, several real RavenDB and EF Core durability fixes, plus the cold-start prep work done as part of issue #1577.Highlights
[Blob]attribute (#2412) by @jeremydmiller in #2617 — off-load large message-property payloads to external storage on send and re-hydrate them on receive, so the on-the-wire envelope stays small. Core abstractions (IClaimCheckStore,ClaimCheckToken,[Blob],FileSystemClaimCheckStore,opts.UseClaimCheck(...)) live inWolverine.Persistence. Two new backend NuGet packages ship alongside:WolverineFx.ClaimCheck.AzureBlobStorageandWolverineFx.ClaimCheck.AmazonS3. New documentation page under/guide/durability/claim-checks.[DocumentExists<T>],[DocumentDoesNotExist<T>], andPolecatOps.Document<T>().MustExist(...)/.MustNotExist(...)mirror the Marten ergonomics, with the same batch-query optimization that folds multiple existence checks into a single PolecatIBatchedQueryround-trip.IMessageBus/IMessageContextnow see the active context (#2583) by @jeremydmiller in #2616 — when user code service-locatesIMessageBus(e.g., constructor injection on a service the handler resolves at runtime), it now receives the sameMessageContextthe handler itself uses, preserving outbox semantics. Implemented as a per-chain opt-in (gated onChain.UsesServiceLocation) so chains that don't service-locate pay zeroAsyncLocaloverhead per message.WolverineFx.RuntimeCompilationopt-in package (#1577) by @jeremydmiller in #2613 and #cc00ca0a — first pass at the cold-start / AOT roadmap. Wires theWolverine.SourceGenerationanalyzer into theWolverineFxNuGet output (so source-generatedIWolverineTypeLoaderdiscovery flows transitively to consumers), pre-populates theWolverineMessageNamingcache during startup to eliminate first-message reflection cost, applies[DynamicallyAccessedMembers]annotations on theActivator.CreateInstancecall sites for trimmer-friendliness, and addsConfigureAwait(false)across 117 awaits on the per-message hot path. The newWolverineFx.RuntimeCompilationpackage becomes the future-facing opt-in API for runtime Roslyn compilation; default behavior is preserved.RavenDB durability fixes
EF Core / ancillary stores
DurableLocalQueueto route incoming envelopes to ancillary stores (#2611) by @jeremydmiller — handler chains targeting an ancillary message store now have their incoming envelopes persisted in that store rather than the main store, fixing a class of "envelope stuck as Incoming forever" bugs.WolverineEnabledannotation collision in ancillary-store EF Core scenarios as part of #2618 —MapWolverineEnvelopeStorageis now idempotent when called against the same model graph more than once.Other improvements
MessageBusclobbering per-messageEnvelope.Sourcein #26e38002 —MessageBus.Sendwas overwriting the per-messageSourcewith the host'sServiceName, masking the originating service in causation tracking.ServiceLocationPolicy.NotAllowedv6 default (#2584) by @jeremydmiller in #2609 — chains that resolve dependencies via service location now log a warning at codegen time, with a clear migration path to the new opt-inWolverine.RuntimeCompilationstory for v6.CI stabilization
IDisposable→IAsyncLifetimeconversions, lifecycle cleanup; chronically broken-on-CI classes (SqliteTests.Transport.multi_tenancy_with_multiple_files,CosmosDbTests.LeaderElection.leader_election,Wolverine.RabbitMQ.Tests.send_by_topics,Wolverine.RabbitMQ.Tests.sending_raw_messages) tagged[Trait("Category", "Flaky")]with header comments documenting the symptom and the real follow-up fix.JasperFx.CodeGenerationandJasperFx.RuntimeCompilernow compile cleanly after theInitializeSynchronouslyextension method was moved intoJasperFx.CodeGenerationupstream.Issue-tracker housekeeping
#2507(Quartz.Net / TickerQ first-class integration) added to the 6.0 milestone with a phased plan documented on the issue.#1577(cold-start optimization roadmap) updated with a six-phase plan and current-state checklist; phases 1–4 are non-breaking on v5.x and largely landed in this release.Full Changelog: JasperFx/wolverine@V5.33.0...V5.34.0
5.33.0
What's Changed
This release includes a major reliability fix for distributed leader election, a port of the Polecat 2.x event store integration, and several other quality-of-life improvements.
Highlights
LeadershipLostnode record type and anIWolverineObserver.LostLeadership()hook for monitoring.JSONtype.Other Improvements
launchSettings.jsonto sample projects by @jeremydmiller in #2600Full Changelog: JasperFx/wolverine@V5.32.1...V5.33.0
What's Changed
New Contributors
Full Changelog: JasperFx/wolverine@V5.32.1...V5.33.0
Commits viewable in compare view.
Updated WolverineFx.Postgresql from 5.32.1 to 5.35.2.
Release notes
Sourced from WolverineFx.Postgresql's releases.
5.35.2
What's Changed
A small bug-fix and dependency-refresh release.
Persistence fixes
OracleMessageStore.Initializeand the surrounding schema declared timestamp columns (health_check,started,posted, etc.) with a DEFAULT ofSYS_EXTRACT_UTC(SYSTIMESTAMP). That returns a TIMESTAMP without a time zone, and when implicitly cast into theTIMESTAMP WITH TIME ZONEcolumn Oracle stamps it with the session time zone — so for any session in UTC+N the just-persisted value's UTC equivalent was N hours in the past. That tripped theNodeAgentController.DoHealthChecksAsyncstaleness filter and surfaced as aNullReferenceExceptionduring the first leadership-election heartbeat (self!.AssignAgents([LeaderUri])on anullself). All 18 occurrences swapped toSYSTIMESTAMP AT TIME ZONE 'UTC', with quote-doubling for the DDL contexts that go through Weasel'sEXECUTE IMMEDIATE '...'wrapper.Reliability hardening
dbcontrol://andoraclecontrol://endpoints toBufferedInMemory(#2637) — the database-backed control transport carries inter-node leader-election and agent-reassignment commands. Marking either endpoint Durable would route every control envelope through the same store-backed inbox/outbox the durability agent itself owns (deadlock); marking it Inline contradicts the batched-poll semantics. BothDatabaseControlEndpointandOracleControlEndpointnow overridesupportsModeso any policy that tries to flip them offBufferedInMemoryeither silently skips (UseDurableInboxOnAllListeners,UseDurableOutboxOnAllSendingEndpoints, etc., already checkSupportsMode) or fails fast with a clearInvalidOperationException.Source-gen / startup
IWolverineTypeLoaderacross all known assemblies (#2632) by @devployment — since 5.34.0, hosts on the source-generated codegen path silently dropped handlers that lived in referenced assemblies becausetryDiscoverTypeLoaderFromAttributeonly inspectedOptions.ApplicationAssembly. First invocation of one of those handlers threwIndeterminateRoutesException. The runtime now walksApplicationAssemblyand every assembly inDiscovery.Assemblies, collects every[WolverineTypeManifest]loader it finds, and exposes their union via the new internalCompositeWolverineTypeLoader. Existing single-loader semantics are preserved when only one manifest is found.Other
Dependencies
Full Changelog: JasperFx/wolverine@V5.35.1...V5.35.2
5.35.1
What's Changed
A bug-fix and small-feature release covering Oracle-in-Balanced-mode startup, a duplicate-poller defect on RavenDb, an AWS SQS sharded-slot naming fix, and a new SagaDescriptor surface for CritterWatch.
Persistence fixes
Oracle in
DurabilityMode.Balancednow boots (#2622) —OracleMessageStore.Initializewas a no-op, so hosts using Oracle persistence in Balanced mode failed to start withArgumentOutOfRangeException("ControlEndpoint cannot be null for this usage"). The fix mirrorsMessageDatabase.Initializefor Oracle and stands up a parallelOracleControlTransport/OracleControlEndpoint/OracleControlSender/OracleControlListenerset under the neworaclecontrol://protocol — necessary because the sharedDatabaseControlSender/DatabaseControlListenerassume@-prefixed placeholders and Guid values that map directly onto aDbParameter, neither of which Oracle accepts (:-prefixed placeholders,RAW(16)id columns requiringbyte[]). Also fixes a latentOracleMessageStore.EnqueueAsyncno-op that leftLogRecordsAsyncsilently dropping node records, and makesFetchRecentRecordsAsyncDBNull-safe on the description column. Adds a newOracleTests.LeaderElectionproject so the leadership-compliance suite runs against Oracle (marked[Trait("Category","Flaky")]because the suite needs careful TM/DML lock sequencing between back-to-back runs).RavenDb: only one durability agent polls after host start (#2623, #2629) by @Bishbulb (root-cause investigation and original fix) and @jeremydmiller —
RavenDbMessageStore.StartScheduledJobseagerly built and started aRavenDbDurabilityAgentat boot in addition to the agent thatNodeAgentControlleralready builds and starts viaIAgentFamily/MessageStoreCollection. TwoRavenDbDurabilityAgentinstances then polled the same database concurrently, both believed they held the scheduled-job lock, raced to mark the same envelopesIncoming, and surfacedConcurrencyExceptionplus double-fired timeouts. Drops the eagerStartTimers()call; the cluster-managed agent is now the single owner of polling. The agent returned fromStartScheduledJobsis held byWolverineRuntime.DurableScheduledJobspurely for its disposal-timeStopAsync. Comes with a reflection-free regression test (addedRavenDbDurabilityAgent.IsPollingandCompositeAgent.InnerAgentsfor the test to enumerate without poking at private fields). A companion regression-guard test for CosmosDb is included; investigation showed the equivalent CosmosDb path does NOT have the bug today (CosmosDbMessageStore.BuildAgentFamilyreturns null andUriuses thecosmosdb://scheme rather thanwolverinedb://, soMessageStoreCollectionnever registers a competing agent).Other improvements
AWS SQS: correct naming for sharded slot endpoints in #1f294ce5 — fixes a regression where sharded slot endpoint URIs were assembled with the wrong segment ordering, causing the consumer side to listen at the wrong queue.
SagaDescriptorexported viaServiceCapabilitiesin #f0998c7b — adds a saga-shape descriptor (saga type, id type, current state) to the capabilities exporter so CritterWatch can surface saga inventory and current state in its dashboard.Full Changelog: JasperFx/wolverine@V5.34.0...V5.35.1
5.34.0
What's Changed
This release introduces three new features (Claim Check pattern, declarative Polecat data requirements, and a new opt-in
WolverineFx.RuntimeCompilationpackage as the first step toward AOT compatibility), a fix for a long-standing service-location footgun, several real RavenDB and EF Core durability fixes, plus the cold-start prep work done as part of issue #1577.Highlights
[Blob]attribute (#2412) by @jeremydmiller in #2617 — off-load large message-property payloads to external storage on send and re-hydrate them on receive, so the on-the-wire envelope stays small. Core abstractions (IClaimCheckStore,ClaimCheckToken,[Blob],FileSystemClaimCheckStore,opts.UseClaimCheck(...)) live inWolverine.Persistence. Two new backend NuGet packages ship alongside:WolverineFx.ClaimCheck.AzureBlobStorageandWolverineFx.ClaimCheck.AmazonS3. New documentation page under/guide/durability/claim-checks.[DocumentExists<T>],[DocumentDoesNotExist<T>], andPolecatOps.Document<T>().MustExist(...)/.MustNotExist(...)mirror the Marten ergonomics, with the same batch-query optimization that folds multiple existence checks into a single PolecatIBatchedQueryround-trip.IMessageBus/IMessageContextnow see the active context (#2583) by @jeremydmiller in #2616 — when user code service-locatesIMessageBus(e.g., constructor injection on a service the handler resolves at runtime), it now receives the sameMessageContextthe handler itself uses, preserving outbox semantics. Implemented as a per-chain opt-in (gated onChain.UsesServiceLocation) so chains that don't service-locate pay zeroAsyncLocaloverhead per message.WolverineFx.RuntimeCompilationopt-in package (#1577) by @jeremydmiller in #2613 and #cc00ca0a — first pass at the cold-start / AOT roadmap. Wires theWolverine.SourceGenerationanalyzer into theWolverineFxNuGet output (so source-generatedIWolverineTypeLoaderdiscovery flows transitively to consumers), pre-populates theWolverineMessageNamingcache during startup to eliminate first-message reflection cost, applies[DynamicallyAccessedMembers]annotations on theActivator.CreateInstancecall sites for trimmer-friendliness, and addsConfigureAwait(false)across 117 awaits on the per-message hot path. The newWolverineFx.RuntimeCompilationpackage becomes the future-facing opt-in API for runtime Roslyn compilation; default behavior is preserved.RavenDB durability fixes
EF Core / ancillary stores
DurableLocalQueueto route incoming envelopes to ancillary stores (#2611) by @jeremydmiller — handler chains targeting an ancillary message store now have their incoming envelopes persisted in that store rather than the main store, fixing a class of "envelope stuck as Incoming forever" bugs.WolverineEnabledannotation collision in ancillary-store EF Core scenarios as part of #2618 —MapWolverineEnvelopeStorageis now idempotent when called against the same model graph more than once.Other improvements
MessageBusclobbering per-messageEnvelope.Sourcein #26e38002 —MessageBus.Sendwas overwriting the per-messageSourcewith the host'sServiceName, masking the originating service in causation tracking.ServiceLocationPolicy.NotAllowedv6 default (#2584) by @jeremydmiller in #2609 — chains that resolve dependencies via service location now log a warning at codegen time, with a clear migration path to the new opt-inWolverine.RuntimeCompilationstory for v6.CI stabilization
IDisposable→IAsyncLifetimeconversions, lifecycle cleanup; chronically broken-on-CI classes (SqliteTests.Transport.multi_tenancy_with_multiple_files,CosmosDbTests.LeaderElection.leader_election,Wolverine.RabbitMQ.Tests.send_by_topics,Wolverine.RabbitMQ.Tests.sending_raw_messages) tagged[Trait("Category", "Flaky")]with header comments documenting the symptom and the real follow-up fix.JasperFx.CodeGenerationandJasperFx.RuntimeCompilernow compile cleanly after theInitializeSynchronouslyextension method was moved intoJasperFx.CodeGenerationupstream.Issue-tracker housekeeping
#2507(Quartz.Net / TickerQ first-class integration) added to the 6.0 milestone with a phased plan documented on the issue.#1577(cold-start optimization roadmap) updated with a six-phase plan and current-state checklist; phases 1–4 are non-breaking on v5.x and largely landed in this release.Full Changelog: JasperFx/wolverine@V5.33.0...V5.34.0
5.33.0
What's Changed
This release includes a major reliability fix for distributed leader election, a port of the Polecat 2.x event store integration, and several other quality-of-life improvements.
Highlights
Description has been truncated