We’ve just released NServiceBus.NHibernate 7.2.2. As part of this release we fixed 1 issue.
- #304 Use locking hint when fetching timeouts
How to know if you are affected
You are affected if all of the below are true:
- the endpoint is scaled out
- the endpoint uses NServiceBus.NHibernate Version 7.0.0 or higher for persistence
- the endpoint uses MSMQ or SQL Server 3.0.x transport
- the transport is configured in TransactionScope transaction mode (default for mentioned transports)
- you are using delayed delivery directly or host sagas that make use of the timeouts.
If an endpoint is scaled-out, when a delayed message is triggered it can be picked up by multiple instances that all compete to dispatch the message to the final destination. In TransactionScope mode the actual message is guaranteed to be sent only once but the “losing” instances will log an exception that the message has already been dispatched.
The extraneous attempts to dispatch the timeouts can have a negative affect on overall system performance, although the system still behaves correctly from a business standpoint.
Should you upgrade immediately
You don’t need to upgrade immediately as the fix does not affect the way messages are dispatched. You should upgrade if you see a high number of errors related to competing delayed message dispatch in the log files as the retries caused by this behavior can negatively affect the overal performance of the endpoint when the volume of delayed messages is high.
Where to get it
You can download the updated version and see the full release notes here:
The team in Particular
Please read our release policy for more details.