From f639f99180c304e8eb4f4d063a7aff309b6b1056 Mon Sep 17 00:00:00 2001 From: antirez Date: Thu, 29 Sep 2011 12:50:46 +0200 Subject: redis-trib cluster check command: check that all the 4096 slots are covered --- src/redis-trib.rb | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'src/redis-trib.rb') diff --git a/src/redis-trib.rb b/src/redis-trib.rb index c8daac376..daa5a78a8 100755 --- a/src/redis-trib.rb +++ b/src/redis-trib.rb @@ -26,6 +26,14 @@ class ClusterNode @friends = [] end + def friends + @friends + end + + def slots + @slots + end + def to_s "#{@host}:#{@port}" end @@ -187,6 +195,16 @@ class RedisTrib def check_cluster puts "Performing Cluster Check (using node #{@nodes[0]})" show_nodes + # Check if all the slots are covered + slots = {} + @nodes.each{|n| + slots = slots.merge(n.slots) + } + if slots.length == 4096 + puts "[OK] All 4096 slots covered." + else + puts "[ERR] Not all 4096 slots are covered by nodes." + end end def alloc_slots @@ -241,8 +259,14 @@ class RedisTrib node = ClusterNode.new(ARGV[1]) node.connect(:abort => true) node.assert_cluster - node.load_info + node.load_info(:getfriends => true) add_node(node) + node.friends.each{|f| + fnode = ClusterNode.new(f[:addr]) + fnode.connect() + fnode.load_info() + add_node(fnode) + } check_cluster end -- cgit v1.2.1