From: antirez Date: Thu, 13 Oct 2011 13:16:03 +0000 (+0200) Subject: redis-trib: fix for a slot allocation bug. X-Git-Url: https://git.saurik.com/redis.git/commitdiff_plain/dd9ad570622cc7a164173d4cb6103655482a9b9f redis-trib: fix for a slot allocation bug. --- diff --git a/src/redis-trib.rb b/src/redis-trib.rb index 8768e544..fa0e8c6d 100755 --- a/src/redis-trib.rb +++ b/src/redis-trib.rb @@ -319,10 +319,11 @@ class RedisTrib # divisibility. Like we have 3 nodes and need to get 10 slots, we take # 4 from the first, and 3 from the rest. So the biggest is always the first. sources = sources.sort{|a,b| b.slots.length <=> a.slots.length} + source_tot_slots = sources.inject {|a,b| a.slots.length+b.slots.length} sources.each_with_index{|s,i| # Every node will provide a number of slots proportional to the # slots it has assigned. - n = (numslots.to_f/4096*s.slots.length) + n = (numslots.to_f/source_tot_slots*s.slots.length) if i == 0 n = n.ceil else