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
{{ message }}
This repository has been archived by the owner on Oct 12, 2023. It is now read-only.
Running in prod, we have identified a few errors that a sender will not recover from.
Once these errors are returned during by a sender operation, it means that the underlying TCP connection is dead and the only way to recover is to recreate the sender.
syscall.ETIMEDOUT (covered by neterr.Timeout())
io.EOF
amqp error with Condition: amqp:internal-error, Description: The service was unable to process the request; please retry the operation.
I think these should be recovered either by servicebus sdk, or maybe even at the lowest level of amqp (for io.EOF for example)
This looks sensible to me. We actually have code similar to this in Event Hubs now as well that handles the recovery in addition to the error classification:
Running in prod, we have identified a few errors that a sender will not recover from.
Once these errors are returned during by a sender operation, it means that the underlying TCP connection is dead and the only way to recover is to recreate the sender.
I think these should be recovered either by servicebus sdk, or maybe even at the lowest level of amqp (for io.EOF for example)
Happy to port the implementation if it's agreed
see go-shuttle for the recovery code we needed to add :
https://github.com/Azure/go-shuttle/blob/main/publisher/errorhandling/recovery.go
The text was updated successfully, but these errors were encountered: