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
Retry with backoff on cluster connection failures (#2358)
* Split JedisClusterCommand into multiple methods
No behavior changes, just a refactoring.
Changes:
* Replaces recursion with a for loop
* Extract redirection handling into its own method
* Extract connection-failed handling into its own method
Note that `tryWithRandomNode` is gone, it was never `true` so it and its
code didn't survive the refactoring.
* Drop redundant null check
* Bump JDK version to 1.8
Inspired by #1334 where this went real easy :).
Would have made #2355 shorter.
Free public updates for JDK 7 ended in 2015:
<https://en.wikipedia.org/wiki/Java_version_history>
For JDK 8, free public support is available from non-Orace vendors until
at least 2026 according to the same table.
And JDK 8 is what Jedis is being tested on anyway:
<https://github.com/redis/jedis/blob/ac0969315655180c09b8139c16bded09c068d498/.circleci/config.yml#L67-L74>
* Replace ConnectionGetters with lambdas
* Retrigger CI
* Add backoff to Redis connections
* Add unit tests for backoff logic
* Add retries logging
* Always use the user requested timeout
* Remedy review feedback
* Consider connection exceptions and disregard random nodes
* consider connection exceptions and disregard random nodes
* reset redirection
* Revert "Consider connection exceptions and disregard random nodes"
This reverts commit 67a062a.
Lots of tests in JedisClusterCommandTests started failing, need to be
fixed before trying again.
* Add another backoff test case
1. We try to contact master => JedisConnectionException
2. We try to contact replica => It refers us to master, hasn't failed over yet
3. We try to contact master => JedisConnectionException
4. We try to contact replica => Success, because it has now failed over
* consider connection exceptions and disregard random nodes
* reset redirection
* Fix test failure
* Apply suggestions from code review
Co-authored-by: Jens Green Olander <[email protected]>
* update documentation
* Improve a comment
* Update src/main/java/redis/clients/jedis/DefaultJedisSocketFactory.java
* Add change from another branch
Source (all of these point to the same place):
* walles/retries-split
* 4f80d73
* #2355
* Move JedisClusterCommandTest out of commands package
* Use JedisClusterOperationException
* Reduce sleep time, especially when few attempts left
* Update src/main/java/redis/clients/jedis/JedisClusterCommand.java
* merge fix
* merge fix
* Use maxAttempts
* format import
* Re-add missing codes due to merge
* avoid NPE while zero max attempts
* Remove zero attempts test
* More cluster constructors and customizability
* Use maxTotalRetriesDuration everywhere
* more missing maxTotalRetriesDuration after merge
Co-authored-by: M Sazzadul Hoque <[email protected]>
Co-authored-by: Jens Green Olander <[email protected]>
Co-authored-by: Jens Green Olander <[email protected]>
0 commit comments