You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When the endpoint process does not have sufficient memory available, messages may be treated as poison and moved to the error queue. Unfortunately, poison messages are not decorated with the headers required for ServiceControl which means that the message will not be visible in ServicePulse or ServiceInsight.
Expected behavior
When an OutOfMemoryException occurs, the message should follow the standard recoverability rules, being automatically retried and eventually moved to the error queue where it can be retried (after the memory pressure problem has been resolved).
Actual behavior
When an OutOfMemoryException occurs, the message is immediately moved to the error queue and it lacks a FailedQ header that would enable it to be retried.
Versions
Please list the version of the relevant packages or applications in which the bug exists.
7.x
6.x
Steps to reproduce
Create a new endpoint with SQL Transport
Set up a ServiceControl instance with SQL Transport
Run the endpoint in a memory constrained environment
Send messages to the endpoint
Wait for the Custom Check in ServiceControl to trigger indicating that the message could not be imported.
Run ServiceControl in maintenance mode to inspect the message. Note that the NServiceBus.FailedQ header is missing
Investigate the endpoint logs looking for OutOfMemoryException
Relevant log output
No response
Additional Information
Workarounds
Possible solutions
Increase the memory available to the endpoint process.
Run ServiceControl in maintenance mode and add a header with a key of NServiceBus.FailedQ and a value of the endpoint address that the message should be returned to
Run the re-import function of ServiceControl
Retry the failed message
Additional information
The root cause seems to be this code which treats any exception thrown while parsing a message as the message being poison.
The text was updated successfully, but these errors were encountered:
Describe the bug
Description
When the endpoint process does not have sufficient memory available, messages may be treated as poison and moved to the error queue. Unfortunately, poison messages are not decorated with the headers required for ServiceControl which means that the message will not be visible in ServicePulse or ServiceInsight.
Expected behavior
When an OutOfMemoryException occurs, the message should follow the standard recoverability rules, being automatically retried and eventually moved to the error queue where it can be retried (after the memory pressure problem has been resolved).
Actual behavior
When an OutOfMemoryException occurs, the message is immediately moved to the error queue and it lacks a
FailedQ
header that would enable it to be retried.Versions
Please list the version of the relevant packages or applications in which the bug exists.
Steps to reproduce
Relevant log output
No response
Additional Information
Workarounds
Possible solutions
NServiceBus.FailedQ
and a value of the endpoint address that the message should be returned toAdditional information
The root cause seems to be this code which treats any exception thrown while parsing a message as the message being poison.
The text was updated successfully, but these errors were encountered: