mirror of
https://github.com/fluencelabs/redis
synced 2025-04-01 15:21:03 +00:00
redis-trib: reshard command work in progress
This commit is contained in:
parent
9514aa3251
commit
85b514d165
@ -164,7 +164,7 @@ class ClusterNode
|
|||||||
x.count == 1 ? x.first.to_s : "#{x.first}-#{x.last}"
|
x.count == 1 ? x.first.to_s : "#{x.first}-#{x.last}"
|
||||||
}.join(",")
|
}.join(",")
|
||||||
|
|
||||||
"[#{@info[:cluster_state].upcase}] #{self.to_s.ljust(25)} slots:#{slots}"
|
"[#{@info[:cluster_state].upcase}] #{self.info[:name]} #{self.to_s.ljust(25)} slots:#{slots}"
|
||||||
end
|
end
|
||||||
|
|
||||||
def info
|
def info
|
||||||
@ -197,8 +197,16 @@ class RedisTrib
|
|||||||
@nodes << node
|
@nodes << node
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def get_node_by_name(name)
|
||||||
|
@nodes.each{|n|
|
||||||
|
return n if n.info[:name] == name.downcase
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
def check_cluster
|
def check_cluster
|
||||||
puts "Performing Cluster Check (using node #{@nodes[0]})"
|
puts "Performing Cluster Check (using node #{@nodes[0]})"
|
||||||
|
errors = []
|
||||||
show_nodes
|
show_nodes
|
||||||
# Check if all the slots are covered
|
# Check if all the slots are covered
|
||||||
slots = {}
|
slots = {}
|
||||||
@ -208,8 +216,10 @@ class RedisTrib
|
|||||||
if slots.length == 4096
|
if slots.length == 4096
|
||||||
puts "[OK] All 4096 slots covered."
|
puts "[OK] All 4096 slots covered."
|
||||||
else
|
else
|
||||||
puts "[ERR] Not all 4096 slots are covered by nodes."
|
errors << "[ERR] Not all 4096 slots are covered by nodes."
|
||||||
|
puts errors[-1]
|
||||||
end
|
end
|
||||||
|
return errors
|
||||||
end
|
end
|
||||||
|
|
||||||
def alloc_slots
|
def alloc_slots
|
||||||
@ -279,6 +289,20 @@ class RedisTrib
|
|||||||
check_cluster
|
check_cluster
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def reshard_cluster_cmd
|
||||||
|
load_cluster_info_from_node(ARGV[1])
|
||||||
|
errors = check_cluster
|
||||||
|
if errors.length != 0
|
||||||
|
puts "Please fix your cluster problems before resharding."
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
many = 0
|
||||||
|
while many <= 0 or many > 4096
|
||||||
|
print "How many slots do you want to move? "
|
||||||
|
many = STDIN.gets.to_i
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def create_cluster_cmd
|
def create_cluster_cmd
|
||||||
puts "Creating cluster"
|
puts "Creating cluster"
|
||||||
ARGV[1..-1].each{|n|
|
ARGV[1..-1].each{|n|
|
||||||
@ -302,7 +326,8 @@ end
|
|||||||
|
|
||||||
COMMANDS={
|
COMMANDS={
|
||||||
"create" => ["create_cluster_cmd", -2, "host1:port host2:port ... hostN:port"],
|
"create" => ["create_cluster_cmd", -2, "host1:port host2:port ... hostN:port"],
|
||||||
"check" => ["check_cluster_cmd", 2, "host:port"]
|
"check" => ["check_cluster_cmd", 2, "host:port"],
|
||||||
|
"reshard" => ["reshard_cluster_cmd", 2, "host:port"]
|
||||||
}
|
}
|
||||||
|
|
||||||
# Sanity check
|
# Sanity check
|
||||||
|
Loading…
x
Reference in New Issue
Block a user