You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ns...@apache.org on 2012/01/05 00:46:48 UTC

svn commit: r1227399 - /hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/BaseScanner.java

Author: nspiegelberg
Date: Wed Jan  4 23:46:48 2012
New Revision: 1227399

URL: http://svn.apache.org/viewvc?rev=1227399&view=rev
Log:
[master] BaseScanner only reads favored nodes if enabled

Summary:
If the cluster is not balancing regions using the assignment load
balancer, then the base scanner should also not read the favored node
hints from META.

Test Plan: Run on a cluster

Reviewers: kranganathan, liyintang

Reviewed By: kranganathan

CC: hbase-eng@lists, kranganathan

Differential Revision: 379825

Modified:
    hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/BaseScanner.java

Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/BaseScanner.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/BaseScanner.java?rev=1227399&r1=1227398&r2=1227399&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/BaseScanner.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/BaseScanner.java Wed Jan  4 23:46:48 2012
@@ -120,6 +120,7 @@ abstract class BaseScanner extends Chore
     }
   }
   private final boolean rootRegion;
+  private final boolean readFavoredNodes;
   protected final HMaster master;
 
   protected boolean initialScanComplete;
@@ -139,6 +140,11 @@ abstract class BaseScanner extends Chore
     this.rootRegion = rootRegion;
     this.master = master;
     this.initialScanComplete = false;
+
+    // Only read favored nodes if using the assignment-based load balancer.
+    this.readFavoredNodes = master.getConfiguration().getClass(
+        HConstants.LOAD_BALANCER_IMPL, Object.class).equals(
+        RegionManager.AssignmentLoadBalancer.class);
   }
 
   /** @return true if initial scan completed successfully */
@@ -199,18 +205,20 @@ abstract class BaseScanner extends Chore
         }
         rows += 1;
 
-        byte[] favoredNodes = values.getValue(HConstants.CATALOG_FAMILY,
-            HConstants.FAVOREDNODES_QUALIFIER);
-        if (favoredNodes != null) {
-          List<HServerAddress> addresses = new ArrayList<HServerAddress>();
-          for (String address : new String(favoredNodes).split(",")) {
-            addresses.add(new HServerAddress(address));
+        if (this.readFavoredNodes) {
+          byte[] favoredNodes = values.getValue(HConstants.CATALOG_FAMILY,
+              HConstants.FAVOREDNODES_QUALIFIER);
+          if (favoredNodes != null) {
+            List<HServerAddress> addresses = new ArrayList<HServerAddress>();
+            for (String address : new String(favoredNodes).split(",")) {
+              addresses.add(new HServerAddress(address));
+            }
+            this.master.getRegionManager().assignmentManager
+                .addPersistentAssignment(info, addresses);
+          } else {
+            this.master.getRegionManager().assignmentManager
+                .removePersistentAssignment(info);
           }
-          this.master.getRegionManager().assignmentManager
-              .addPersistentAssignment(info, addresses);
-        } else {
-          this.master.getRegionManager().assignmentManager
-              .removePersistentAssignment(info);
         }
       }
       if (rootRegion) {