[12.x] Handle AWS ElasticCache failover by reconnecting when READONLY #57685
+1
−1
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.
I am currently running AWS ElasticCache Valkey with multi-AZ enabled. When the primary node fails over to the replica (promoting it to primary), our Horizon daemons continually throw the following error until manually restarted.
The full stacktrace (from Laravel 11)
It would seem this should be handled by
phpredisitself, but Laravel has this continually growing array of errors to force a reconnect 🤷phpredison our servers is the latest6.2.0.For the moment we switched back to
predisas the reconnect works automatically. See predis/predis#720.We tried setting retries with no difference in our
database.phpconfig:That's probably because it's not trying to reconnect but using the existing connection that is now read-only.
I did try this by overriding the Redis classes, but it's a lot of code to replicate where Laravel should handle it itself.