Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Does your PR solve an issue?
Fixes #4014
Is this a breaking change?
No, this does not affect the public API, only the internal implementation.
Summary of changes
ConnectionReset
was not included for some reason).Added an internalconnection_with_recovery()
method which is basically the same asconnection()
, but on failure to connect to the database it retries max 5 times (with a very basic back-off strategy)recv_without_recovery()
method which is justtry_recv()
simplified, without any connection recovery strategies. The intention is to group the initial IO-fallible calls together.try_recv
method to userecv_without_recovery()
, matching any IO error and trying to reconnectusingconnection_with_recovery()
This appears to pass my internal tests simulating a connection disruption to the database.
Looking forward to comments and insights