From dd9ad570622cc7a164173d4cb6103655482a9b9f Mon Sep 17 00:00:00 2001
From: antirez <antirez@gmail.com>
Date: Thu, 13 Oct 2011 15:16:03 +0200
Subject: [PATCH] redis-trib: fix for a slot allocation bug.

---
 src/redis-trib.rb | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

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