NServiceBus.Transport.Msmq 2.0.1 and 1.2.2 – Patch releases available

Hi everyone,

We’ve just released NServiceBus.Transport.Msmq 2.0.1 and 1.2.2.

Fixed bugs

  • #607 Native delayed delivery implementation can’t use delay longer than 24.85 days

Minor bugfixes

  • NServiceBus#6813 Startup diagnostic serialization fails when diagnostic entries include System.Type properties

How to know if you are affected

You are affected by #607 if endpoints request timeouts for longer than 24 days.

Symptoms

When the next due timeout is greater than a timespan of approximately 24.85 days (int.MaxValue in milliseconds) timeout processing begins throwing the following exception in a tight loop.

ERROR Failed to poll and dispatch due timeouts from storage.
System.ArgumentOutOfRangeException: The value needs to translate in milliseconds to -1 (signifying an infinite timeout), 0 or a positive integer less than or equal to Int32.MaxValue.
Parameter name: delay
at System.Threading.Tasks.Task.Delay(TimeSpan delay, CancellationToken cancellationToken)
at NServiceBus.Transport.Msmq.DelayedDelivery.DueDelayedMessagePoller.WaitIfNeeded(DateTimeOffset nextPoll, CancellationToken cancellationToken) in /_/src/NServiceBus.Transport.Msmq/DelayedDelivery/DueDelayedMessagePoller.cs:line 178
at NServiceBus.Transport.Msmq.DelayedDelivery.DueDelayedMessagePoller.<Loop>d__5.MoveNext()

While messages are processed successfully and on time, the tight loop causes excessive CPU and database usage.

When to upgrade

If affected, you should upgrade immediately to reduce CPU and database costs.

Where to get it

You can install the new versions of NServiceBus.Transport.Msmq from NuGet.

With thanks,
The team in Particular

Please read our release policy for more details.