If you have 6 nodes and force a network partition into 3/3 nodes, then new RedisCluster() will not take into account when connecting to the minority of the cluster and report "CLUSTER DOWN" instead.
Reproduce case: Take 2 VMs (in my case i used Digitalocean), with 3 Redis Cluster servers each, split them into 2 master/1 slave and 1 master/2 slaves. Use iptables to force a network partition between both VMs, use save_path= to connect to the half where the minority (non masters) are located.
Now all requests will fail with 500, even though the cluster is up.
You can partially fix this by shuffling the nodes before connecting, so that only half of the nodes connect to the minority of the cluster.
But the solution would be that RedisCluster detects connecting to a minority node and skipping it.
If you have 6 nodes and force a network partition into 3/3 nodes, then
new RedisCluster()will not take into account when connecting to the minority of the cluster and report "CLUSTER DOWN" instead.Reproduce case: Take 2 VMs (in my case i used Digitalocean), with 3 Redis Cluster servers each, split them into 2 master/1 slave and 1 master/2 slaves. Use iptables to force a network partition between both VMs, use save_path= to connect to the half where the minority (non masters) are located.
Now all requests will fail with 500, even though the cluster is up.
You can partially fix this by shuffling the nodes before connecting, so that only half of the nodes connect to the minority of the cluster.
But the solution would be that
RedisClusterdetects connecting to a minority node and skipping it.