question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

rediscluster.exceptions.RedisClusterException: Slot "13145" not covered by the cluster. "skip_full_coverage_check=True"

See original GitHub issue

Hello,

I am using redis-py-cluster 2.0.0 and AWS Elasticache Clustered Mode Redis.

When I initialize my RedisCluster client with skip_full_coverage_check=False, I get the following error: redis.exceptions.ResponseError: unknown command `CONFIG`, with args beginning with: `GET`, `cluster-require-full-coverage`,

It gets resolved when I use skip_full_coverage_check=True.

After this, I tried primary failover by initiating failover in one of the shards. After the failover finished one of my containers connecting with the Redis started throwing errors like below:

rediscluster.exceptions.RedisClusterException: Slot "13145" not covered by the cluster. "skip_full_coverage_check=True"

Strange thing is that the other containers were working fine after the failover. What can be the issue?

Thanks, Umang.

Issue Analytics

  • State:closed
  • Created 4 years ago
  • Comments:17 (9 by maintainers)

github_iconTop GitHub Comments

1reaction
Grokzencommented, Jan 21, 2020

Basically this is technicall intended from the client side of things. What happens when you start a failover is that the client picks this up and it tries to rebuild the slots cache and when your slot is not covered during the failover event timeframe, that error is pushed up by the client since you technically told it to ignore if your cluster is broken or not, it is up to your code to sort it out if you want that behaviour from your client.

I do get why this would be wrong from a usability pov when using the aws elasticache cluster mode. It might be needed to split the config into two new options instead of one. One that controlls if cluster-require-full-coverage is really needed or not. And one that will deal with how the client should behave internally. I would have to think about this tho, and the only suggestion i can give you right now is that you need to sort this out in your code layer for now if you keep using this mode/feature

0reactions
Grokzencommented, Oct 4, 2021

Yes that is what you must do, you need to create a proper cluster that has all 16k slots assigned to one of the master nodes in your cluster. Just having the nodes up and running do not help if your cluster is not setup properly please read up on the basics here https://redis.io/topics/cluster-tutorial and try again.

What all slots covered means is that you need to have all 16k slots assigned to at least one master node. In your case the slot 3280 for some reason is not assigned properly to a master node and thus is “not covered” when you attempt to ask the redis cluster what the current cluster setup is when query CLUSTER SLOTS command.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Upgrading redis-py-cluster - Read the Docs
Example exception rediscluster.exceptions.RedisClusterException: Slot “6986” not covered by the cluster. “skip_full_coverage_check=True” ...
Read more >
Grokzen/redis-py-cluster - Gitter
RedisClusterException : ERROR sending 'cluster slots' command to redis ... fail on the part where it checks if all slots is covered or...
Read more >
redis-py-cluster Documentation - Read the Docs
Example exception rediscluster.exceptions.RedisClusterException: Slot “6986” not covered by the cluster. “skip_full_coverage_check=True”.
Read more >
redis-py-cluster 2.1.3 - PyPI
This client provides a client for redis cluster that was added in redis ... When a slot is not covered by the cluster,...
Read more >
New cluster-mode support in redis-py | AWS Open Source Blog
As mentioned above, all non key-based RedisCluster commands accept the keyword argument 'target_nodes' that specifies the node(s) that the ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found