[5.8] Use ClusterInterface instead of PredisCluster #28706
Merged
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.
The issue
There is an issue when running the
artisan cache:clear
command with a redis cluster using the Predis library:The reason why
There is logic to check whether the connection is using a cluster or single node, which determines how the flush command should be executed. However the condition for this check isn't working correctly.
The current logic checks to see if the connection is an instance of
Predis\Connection\Aggregate\PredisCluster
, however when I was debugging the error I noticed the instance I got was ofPredis\Connection\Aggregate\RedisCluster
.The proposed solution
Both of these classes implement the
Predis\Connection\Aggregate\ClusterInterface
interface, so by checking if the connection is an instance of this interface instead, the error no longer occurs.Supporting info
My Redis config in
config/database.php
is: