You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2010/12/07 01:58:05 UTC

svn commit: r1042882 - in /hbase/trunk: CHANGES.txt src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java

Author: stack
Date: Tue Dec  7 00:58:05 2010
New Revision: 1042882

URL: http://svn.apache.org/viewvc?rev=1042882&view=rev
Log:
HBASE-3315 Add debug output for when balancer makes bad balance

Modified:
    hbase/trunk/CHANGES.txt
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java

Modified: hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=1042882&r1=1042881&r2=1042882&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Tue Dec  7 00:58:05 2010
@@ -745,6 +745,7 @@ Release 0.90.0 - Unreleased
    HBASE-3298  Regionserver can close during a split causing double assignment
    HBASE-3309  " Not running balancer because dead regionserver processing" is a lie
    HBASE-3314  [shell] 'move' is broken
+   HBASE-3315  Add debug output for when balancer makes bad balance
 
 
   IMPROVEMENTS

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java?rev=1042882&r1=1042881&r2=1042882&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java Tue Dec  7 00:58:05 2010
@@ -293,11 +293,20 @@ public class LoadBalancer {
 
     long endTime = System.currentTimeMillis();
 
-    assert(regionidx == regionsToMove.size()): "clusterState=" + clusterState +
-      ", regionidx=" + regionidx + ", regionsToMove=" + regionsToMove +
+    if (regionidx != regionsToMove.size() || neededRegions != 0) {
+      // Emit data so can diagnose how balancer went astray.
+      LOG.warn("regionidx=" + regionidx + ", regionsToMove=" + regionsToMove.size() +
       ", numServers=" + numServers + ", serversOverloaded=" + serversOverloaded +
-      ", serversUnderloaded=" + serversUnderloaded;
-    assert(neededRegions == 0);
+      ", serversUnderloaded=" + serversUnderloaded);
+      StringBuilder sb = new StringBuilder();
+      for (Map.Entry<HServerInfo, List<HRegionInfo>> e: clusterState.entrySet()) {
+        if (sb.length() > 0) sb.append(", ");
+        sb.append(e.getKey().getServerName());
+        sb.append(" ");
+        sb.append(e.getValue().size());
+      }
+      LOG.warn("Input " + sb.toString());
+    }
 
     // All done!
     LOG.info("Calculated a load balance in " + (endTime-startTime) + "ms. " +
@@ -636,7 +645,7 @@ public class LoadBalancer {
     public String toString() {
       return "hri=" + this.hri.getRegionNameAsString() + ", src=" +
         (this.source == null? "": this.source.getServerName()) +
-        ", dest=" + this.dest.getServerName();
+        ", dest=" + (this.dest == null? "": this.dest.getServerName());
     }
   }
 }