[Ehancement]Try run command again after renew the redis cluster slot cache #2195
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.
Consider such a scenario in redis cluster, one master node down and the replica node promote to master, which means the cluster topological changed. So the request to the previous master node will fail and retry. But in this scenario, retry will never success.
Currently, Jedis will renew the slots cache in the last retry, release this invalid jedis instance from pool, then just throws a
JedisClusterMaxAttemptsException
, so this request get failed.Maybe it's better to give a chance to retry run command after renew the cluster's slots cache, so I add this logic: in the second last attempt, renew slots cache, then run last retry.