Skip to content

Bump WolverineFx and WolverineFx.RuntimeCompilation - #2598

Closed
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/nuget/multi-5fd53d4d53
Closed

dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/nuget/multi-5fd53d4d53

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Updated WolverineFx from 6.60.0 to 6.61.0.

Release notes

Sourced from WolverineFx's releases.

6.61.0

This is a minor release. Upgrading is a package bump only: there is no schema change and no breaking API change.

New

  • GH-5320 (#​5326): Recurring schedules can now run as often as every second, and a schedule can skip an occurrence while the previous one is still running.
    • CronSchedule.MinimumCadence is now one second, for six-field cron expressions such as * * * * * *. Anything faster than five seconds always runs on a timer agent, and UseScheduledMessages() refuses it.
    • The new SkipWhileRunning() on a recurring schedule invokes each occurrence instead of publishing it. An occurrence that comes due while the previous one is still running is skipped, and skipped occurrences are not made up later. Skips are logged and counted in the new wolverine-recurring-occurrences-skipped metric.
    • With a local handler, the occurrence runs on the node that owns the schedule's timer agent, so overlap is prevented across the cluster. Because the occurrence is invoked, other subscribers don't receive it, and it has no inbox row, queue error policy or dead letter queue. A failed occurrence is logged and the next one runs on schedule. With a handler on another node, the wait is capped at 5 seconds.
    • A one-second schedule writes about 86,400 deduplication rows a day.
  • GH-5317 (#​5323): PauseThenCatchUpOnAllMartenDaemonActivityAsync() and the tracked-session option PauseThenCatchUpOnAllMartenDaemonActivity() catch up the main Marten store and every ancillary store registered with IntegrateWithWolverine() in one call. A store with no events is skipped.
  • GH-5311 (#​5324): A failed handler attempt now records the OpenTelemetry exception event (exception.type, exception.message, exception.stacktrace) on its span, instead of only the exception's type name. Exception messages can carry application data, so you can turn this off with opts.Tracking.RecordExceptionsOnSpans = false.
  • GH-5339 (#​5341): EntityDescriptor.Ddl now carries each EF Core entity's CREATE TABLE script, with its keys, foreign keys and indexes, the same way DocumentMappingDescriptor.Ddl does for documents. It's generated from the model, so no connection is opened, and it's the model's script rather than the database's. Non-relational providers and view-mapped entities leave it empty. Needs JasperFx 2.99.0.
  • GH-5332 (#​5338): Wolverine HTTP endpoints now tag the request span with http.route and http.request.method, the OpenTelemetry semantic convention names, alongside handler.type. Both are constants in the generated code. Pre-generated code should be regenerated.
  • Dead letter queries can filter their time range on the failure time with the new DeadLetterEnvelopeQuery.RangeOn (DeadLetterTimeField.SentAt or FailedAt) (#​5330). FailedAt falls back to sent_at when failed_at is null, and applies to query, replay, discard and archive. The default stays SentAt. Supported by the PostgreSQL, SQL Server, MySQL, SQLite, Oracle, CosmosDb and RavenDb stores.

Fixes

  • GH-5310 (#​5328): With Marten's TrackConnections turned on, the handler, saga and stream tags (handler.type, message.handler, wolverine.saga.*, wolverine.stream.*) landed on the marten.connection span instead of the message's own span. They now stay on the message span, and on the request span for HTTP endpoints. Pre-generated code should be regenerated.
  • GH-5312 (#​5327): A durable ScheduleRetry(...) lost the link to the attempt that failed, because the stored envelope body wasn't rewritten when the retry was scheduled. Every message store now rewrites the body when it reschedules an envelope.
  • GH-5313 (#​5321): Azure Service Bus queues and subscriptions and Amazon SQS queues now report DeadLetterStorageMode.NativeWithRecovery when EnableDeadLetterQueueRecovery() drains them, so CritterWatch's startup check no longer warns about them.
  • GH-5314 (#​5325): With RabbitMQ's EnableDeadLetterQueueRecovery(), stopping the host could throw AlreadyClosedException when two stops ran at once, as they do under WebApplicationFactory. Stopping the dead letter queue listener is now idempotent and never throws.
  • GH-5315 (#​5322): FindSingleTrackedMessageOfType<T>() now counts envelopes rather than distinct message values, so publishing two equal records fails the check. A message sent to several destinations still counts once. Use tracked.Sent.SingleMessage<T>() for a check per destination.
  • GH-5318 (#​5319): The testing docs now explain that the pause in PauseThenCatchUpOnMartenDaemonActivity waits out the high water agent's current poll tick. The fix is JasperFx/jasperfx#​1100.
  • GH-5331 (#​5336): With runtime code generation, each saga message disappeared from ServiceCapabilities.Sagas once it had been handled, and the saga disappeared once every message had been. The saga report, including each store's GetRegisteredSagasAsync, now reads the same before and after the chains compile.
  • GH-5334 (#​5337): In Balanced mode, lifting a pause on a URI that no agent owns, such as a listening endpoint, waited out AgentRestrictionConfirmationTimeout and then threw AgentRestrictionsNotConfirmedException. It now returns at once. Agent URIs are still confirmed as before.
  • Sessions the application opens itself and enrolls with IPolecatOutbox.Enroll or IFisherOutbox.Enroll never flushed their outgoing messages on commit (#​5309). Durable messages waited until a restart and buffered messages were lost. They now flush on commit, the same as handler sessions, and the incoming envelope is marked handled once instead of twice.

Dependencies

  • JasperFx 2.99.0 (#​5333 took 2.98.0, #​5341 2.99.0).
  • Weasel 9.48.0 and MySqlConnector 2.6.1 (#​5335). MySqlConnector 2.6.1 closes GHSA-473q-m89c-ghf8 for WolverineFx.MySql. On SQL Server, a DateTime parameter in a message store command now goes out as datetime2 instead of datetime. Every envelope time column is datetimeoffset, so no column is converted either way.

Thanks to @​uniquelau for #​5313, #​5314, #​5315, #​5317 and #​5318, and to @​lahma for #​5330.

Full Changelog: JasperFx/wolverine@V6.60.0...V6.61.0

Commits viewable in compare view.

Updated WolverineFx.RuntimeCompilation from 6.59.0 to 6.61.0.

Release notes

Sourced from WolverineFx.RuntimeCompilation's releases.

6.61.0

This is a minor release. Upgrading is a package bump only: there is no schema change and no breaking API change.

New

  • GH-5320 (#​5326): Recurring schedules can now run as often as every second, and a schedule can skip an occurrence while the previous one is still running.
    • CronSchedule.MinimumCadence is now one second, for six-field cron expressions such as * * * * * *. Anything faster than five seconds always runs on a timer agent, and UseScheduledMessages() refuses it.
    • The new SkipWhileRunning() on a recurring schedule invokes each occurrence instead of publishing it. An occurrence that comes due while the previous one is still running is skipped, and skipped occurrences are not made up later. Skips are logged and counted in the new wolverine-recurring-occurrences-skipped metric.
    • With a local handler, the occurrence runs on the node that owns the schedule's timer agent, so overlap is prevented across the cluster. Because the occurrence is invoked, other subscribers don't receive it, and it has no inbox row, queue error policy or dead letter queue. A failed occurrence is logged and the next one runs on schedule. With a handler on another node, the wait is capped at 5 seconds.
    • A one-second schedule writes about 86,400 deduplication rows a day.
  • GH-5317 (#​5323): PauseThenCatchUpOnAllMartenDaemonActivityAsync() and the tracked-session option PauseThenCatchUpOnAllMartenDaemonActivity() catch up the main Marten store and every ancillary store registered with IntegrateWithWolverine() in one call. A store with no events is skipped.
  • GH-5311 (#​5324): A failed handler attempt now records the OpenTelemetry exception event (exception.type, exception.message, exception.stacktrace) on its span, instead of only the exception's type name. Exception messages can carry application data, so you can turn this off with opts.Tracking.RecordExceptionsOnSpans = false.
  • GH-5339 (#​5341): EntityDescriptor.Ddl now carries each EF Core entity's CREATE TABLE script, with its keys, foreign keys and indexes, the same way DocumentMappingDescriptor.Ddl does for documents. It's generated from the model, so no connection is opened, and it's the model's script rather than the database's. Non-relational providers and view-mapped entities leave it empty. Needs JasperFx 2.99.0.
  • GH-5332 (#​5338): Wolverine HTTP endpoints now tag the request span with http.route and http.request.method, the OpenTelemetry semantic convention names, alongside handler.type. Both are constants in the generated code. Pre-generated code should be regenerated.
  • Dead letter queries can filter their time range on the failure time with the new DeadLetterEnvelopeQuery.RangeOn (DeadLetterTimeField.SentAt or FailedAt) (#​5330). FailedAt falls back to sent_at when failed_at is null, and applies to query, replay, discard and archive. The default stays SentAt. Supported by the PostgreSQL, SQL Server, MySQL, SQLite, Oracle, CosmosDb and RavenDb stores.

Fixes

  • GH-5310 (#​5328): With Marten's TrackConnections turned on, the handler, saga and stream tags (handler.type, message.handler, wolverine.saga.*, wolverine.stream.*) landed on the marten.connection span instead of the message's own span. They now stay on the message span, and on the request span for HTTP endpoints. Pre-generated code should be regenerated.
  • GH-5312 (#​5327): A durable ScheduleRetry(...) lost the link to the attempt that failed, because the stored envelope body wasn't rewritten when the retry was scheduled. Every message store now rewrites the body when it reschedules an envelope.
  • GH-5313 (#​5321): Azure Service Bus queues and subscriptions and Amazon SQS queues now report DeadLetterStorageMode.NativeWithRecovery when EnableDeadLetterQueueRecovery() drains them, so CritterWatch's startup check no longer warns about them.
  • GH-5314 (#​5325): With RabbitMQ's EnableDeadLetterQueueRecovery(), stopping the host could throw AlreadyClosedException when two stops ran at once, as they do under WebApplicationFactory. Stopping the dead letter queue listener is now idempotent and never throws.
  • GH-5315 (#​5322): FindSingleTrackedMessageOfType<T>() now counts envelopes rather than distinct message values, so publishing two equal records fails the check. A message sent to several destinations still counts once. Use tracked.Sent.SingleMessage<T>() for a check per destination.
  • GH-5318 (#​5319): The testing docs now explain that the pause in PauseThenCatchUpOnMartenDaemonActivity waits out the high water agent's current poll tick. The fix is JasperFx/jasperfx#​1100.
  • GH-5331 (#​5336): With runtime code generation, each saga message disappeared from ServiceCapabilities.Sagas once it had been handled, and the saga disappeared once every message had been. The saga report, including each store's GetRegisteredSagasAsync, now reads the same before and after the chains compile.
  • GH-5334 (#​5337): In Balanced mode, lifting a pause on a URI that no agent owns, such as a listening endpoint, waited out AgentRestrictionConfirmationTimeout and then threw AgentRestrictionsNotConfirmedException. It now returns at once. Agent URIs are still confirmed as before.
  • Sessions the application opens itself and enrolls with IPolecatOutbox.Enroll or IFisherOutbox.Enroll never flushed their outgoing messages on commit (#​5309). Durable messages waited until a restart and buffered messages were lost. They now flush on commit, the same as handler sessions, and the incoming envelope is marked handled once instead of twice.

Dependencies

  • JasperFx 2.99.0 (#​5333 took 2.98.0, #​5341 2.99.0).
  • Weasel 9.48.0 and MySqlConnector 2.6.1 (#​5335). MySqlConnector 2.6.1 closes GHSA-473q-m89c-ghf8 for WolverineFx.MySql. On SQL Server, a DateTime parameter in a message store command now goes out as datetime2 instead of datetime. Every envelope time column is datetimeoffset, so no column is converted either way.

Thanks to @​uniquelau for #​5313, #​5314, #​5315, #​5317 and #​5318, and to @​lahma for #​5330.

Full Changelog: JasperFx/wolverine@V6.60.0...V6.61.0

6.60.0

What's Changed

Full Changelog: JasperFx/wolverine@V6.59.1...V6.60.0

6.59.1

This is a patch release with two fixes. Upgrading is a package bump only: there is no schema change and no API change.

SQL Server: the inbox and outbox seek on their indexes again

  • GH-5292 (#​5294): Several of the SQL Server message store's per-envelope statements were scanning the whole envelope table. That cost grows with the size of the inbox and outbox, and those statements run once per message. The cause was how two kinds of value were bound as parameters.
    • Envelope ids went out as sql_variant. The statements that mark envelopes as handled, reassign them, delete them and move them to the dead letter queue all filter on the envelope id. Weasel's generic command builder has no mapping for Guid, so it bound each id as DbType.Object, which SqlClient sends as sql_variant. SQL Server then had to compare CONVERT_IMPLICIT(sql_variant, [id]) on every row, which rules out a seek on the uniqueidentifier primary key. Ids are now bound as uniqueidentifier, so each statement is a primary key seek.
    • Envelope addresses went out as nvarchar. received_at on the inbox and destination on the outbox are varchar(250) columns, but statements that filter on them bound the address as nvarchar. Under a SQL collation such as SQL_Latin1_General_CP1_CI_AS, the default on Azure SQL, that converts the column and defeats the index. The statements affected are the per-envelope updates and deletes, inbox recovery's page load, outbox loads by destination, the scheduled message updates and the duplicate check. They now bind the address as varchar.
    • DateTime parameters kept only the date. The same generic mapping typed DateTime as DbType.Date. The message store now lets SqlClient type both values itself.
    • The new test checks SQL Server's plan cache after running each of these statements. It requires that no plan contains sql_variant and that no plan converts an indexed envelope column. The full SqlServerTests suite passes (721 tests, 2 skipped).
    • PostgreSQL, MySQL, SQLite and Oracle bind exactly as they did before.
    • The underlying Weasel mappings are tracked as JasperFx/weasel#​758 (Guid as sql_variant) and JasperFx/weasel#​759 (DateTime as date). Wolverine works around both on its own, so this release doesn't wait for a Weasel release.

The run command no longer blocks a thread pool thread

  • JasperFx 2.96.2 (JasperFx/jasperfx#​1093, fixes JasperFx/jasperfx#​1092): Wolverine now depends on JasperFx 2.96.2. Before this release, the run command waited for shutdown by blocking a thread pool thread for the whole life of the application. That matters when a container's CPU limit is below one core. ProcessorCount is then 1, so the thread pool's minimum is one thread, and the run command held it. After that, every burst of work had to wait for the pool to add a thread, about 500 ms each time. The reporter saw a 200 ms Task.Delay loop wake up as much as about 950 ms late on Azure Container Apps.
    • The run command now awaits shutdown instead of blocking. It still listens for the same three signals: ApplicationStopping, Ctrl+C, and the assembly load context unloading.
    • When the host is already started (the AutoStartHost / WebApplicationFactory path), RunJasperFxCommands() used to block the calling thread. It now returns a task that completes when the host shuts down.
    • This applies to every application started with RunJasperFxCommands() or RunWolverineCommands(), whatever its persistence or transport.

Full Changelog: JasperFx/wolverine@V6.59.0...V6.59.1

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 rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will 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 version will 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 dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps WolverineFx from 6.60.0 to 6.61.0
Bumps WolverineFx.RuntimeCompilation from 6.59.0 to 6.61.0

---
updated-dependencies:
- dependency-name: WolverineFx
  dependency-version: 6.61.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: WolverineFx.RuntimeCompilation
  dependency-version: 6.61.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added .NET Pull requests that update .NET code dependencies Pull requests that update a dependency file labels Nov 3, 2026
@coderabbitai

coderabbitai Bot commented Nov 3, 2026

Copy link
Copy Markdown

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

Run configuration

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

CodeRabbit Verify

  • Run CodeRabbit Verify to test the changes in this pull request.

Copy link
Copy Markdown
Collaborator

·@·d·ependabot r·ebase


Generated by Claude Code

@dependabot @github

dependabot Bot commented on behalf of github Nov 3, 2026

Copy link
Copy Markdown
Contributor Author

Looks like these dependencies are no longer updatable, so this is no longer needed.

@dependabot dependabot Bot closed this Nov 3, 2026
@dependabot
dependabot Bot deleted the dependabot/nuget/multi-5fd53d4d53 branch November 3, 2026 04:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant