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.