Merge pull request #3152 from be-hase/fix/check_open_slots

Fix redis-trib.rb
This commit is contained in:
Salvatore Sanfilippo 2016-05-05 08:56:28 +02:00
commit 09153b9127

View File

@ -407,7 +407,8 @@ class RedisTrib
cluster_error \ cluster_error \
"[WARNING] Node #{n} has slots in migrating state (#{n.info[:migrating].keys.join(",")})." "[WARNING] Node #{n} has slots in migrating state (#{n.info[:migrating].keys.join(",")})."
open_slots += n.info[:migrating].keys open_slots += n.info[:migrating].keys
elsif n.info[:importing].size > 0 end
if n.info[:importing].size > 0
cluster_error \ cluster_error \
"[WARNING] Node #{n} has slots in importing state (#{n.info[:importing].keys.join(",")})." "[WARNING] Node #{n} has slots in importing state (#{n.info[:importing].keys.join(",")})."
open_slots += n.info[:importing].keys open_slots += n.info[:importing].keys
@ -567,17 +568,17 @@ class RedisTrib
# Use ADDSLOTS to assign the slot. # Use ADDSLOTS to assign the slot.
puts "*** Configuring #{owner} as the slot owner" puts "*** Configuring #{owner} as the slot owner"
n.r.cluster("setslot",slot,"stable") owner.r.cluster("setslot",slot,"stable")
n.r.cluster("addslot",slot) owner.r.cluster("addslots",slot)
# Make sure this information will propagate. Not strictly needed # Make sure this information will propagate. Not strictly needed
# since there is no past owner, so all the other nodes will accept # since there is no past owner, so all the other nodes will accept
# whatever epoch this node will claim the slot with. # whatever epoch this node will claim the slot with.
n.r.cluster("bumpepoch") owner.r.cluster("bumpepoch")
# Remove the owner from the list of migrating/importing # Remove the owner from the list of migrating/importing
# nodes. # nodes.
migrating.delete(n) migrating.delete(owner)
importing.delete(n) importing.delete(owner)
end end
# If there are multiple owners of the slot, we need to fix it # If there are multiple owners of the slot, we need to fix it