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/10/20 07:12:20 UTC

svn commit: r1024524 - in /hbase/trunk: CHANGES.txt src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java src/main/java/org/apache/hadoop/hbase/master/ServerManager.java

Author: stack
Date: Wed Oct 20 05:12:19 2010
New Revision: 1024524

URL: http://svn.apache.org/viewvc?rev=1024524&view=rev
Log:
HBASE-3128 On assign, if ConnectException, reassign another server

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

Modified: hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=1024524&r1=1024523&r2=1024524&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Wed Oct 20 05:12:19 2010
@@ -1018,6 +1018,7 @@ Release 0.21.0 - Unreleased
    HBASE-3115  HBaseClient wastes 1 TCP packet per RPC
    HBASE-3076  Allow to disable automatic shipping of dependency jars
                for mapreduce jobs (Bruno Dumon)
+   HBASE-3128  On assign, if ConnectException, reassign another server
 
   NEW FEATURES
    HBASE-1961  HBase EC2 scripts

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java?rev=1024524&r1=1024523&r2=1024524&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java Wed Oct 20 05:12:19 2010
@@ -729,7 +729,7 @@ public class AssignmentManager extends Z
     } catch (Throwable t) {
       LOG.warn("Failed assignment of " +
         state.getRegion().getRegionNameAsString() + " to " +
-        plan.getDestination(), t);
+        plan.getDestination() + ", trying to assign elsewhere instead", t);
       // Clean out plan we failed execute and one that doesn't look like it'll
       // succeed anyways; we need a new plan!
       this.regionPlans.remove(state.getRegion().getEncodedName());
@@ -873,18 +873,11 @@ public class AssignmentManager extends Z
     try {
       serverManager.sendRegionClose(regions.get(region), state.getRegion());
     } catch (IOException e) {
-      if (e instanceof RemoteException) {
-        e = ((RemoteException)e).unwrapRemoteException();
-      }
-      if (e instanceof NotServingRegionException) {
-        LOG.warn("Attempted to close region " + region.getRegionNameAsString() +
-          " but got an NSRE", e);
-      }
-      // For now call abort if unexpected exception -- seeing it up in hudson.
+      // For now call abort if unexpected exception -- radical, but will get fellas attention.
       // St.Ack 20101012
       this.master.abort("Remote unexpected exception", e);
     } catch (Throwable t) {
-      // For now call abort if unexpected exception -- seeing it up in hudson.
+      // For now call abort if unexpected exception -- radical, but will get fellas attention.
       // St.Ack 20101012
       this.master.abort("Unexpected exception", t);
     }

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java?rev=1024524&r1=1024523&r2=1024524&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java Wed Oct 20 05:12:19 2010
@@ -41,6 +41,7 @@ import org.apache.hadoop.hbase.PleaseHol
 import org.apache.hadoop.hbase.Server;
 import org.apache.hadoop.hbase.Stoppable;
 import org.apache.hadoop.hbase.YouAreDeadException;
+import org.apache.hadoop.hbase.ZooKeeperConnectionException;
 import org.apache.hadoop.hbase.client.HConnection;
 import org.apache.hadoop.hbase.client.HConnectionManager;
 import org.apache.hadoop.hbase.ipc.HRegionInterface;
@@ -48,7 +49,6 @@ import org.apache.hadoop.hbase.master.ha
 import org.apache.hadoop.hbase.master.metrics.MasterMetrics;
 import org.apache.hadoop.hbase.regionserver.Leases.LeaseStillHeldException;
 import org.apache.hadoop.hbase.util.Threads;
-import org.apache.hadoop.ipc.RemoteException;
 import org.apache.hadoop.util.StringUtils;
 
 /**
@@ -558,21 +558,24 @@ public class ServerManager {
     hri.closeRegion(region);
   }
 
-  private HRegionInterface getServerConnection(HServerInfo info) {
-    try {
-      HConnection connection =
-        HConnectionManager.getConnection(this.master.getConfiguration());
-      HRegionInterface hri = serverConnections.get(info.getServerName());
-      if (hri == null) {
-        LOG.debug("New connection to " + info.getServerName());
-        hri = connection.getHRegionConnection(info.getServerAddress(), false);
-        serverConnections.put(info.getServerName(), hri);
-      }
-      return hri;
-    } catch (IOException e) {
-      LOG.error("Error connecting to region server", e);
-      throw new RuntimeException("Fatal error connection to RS", e);
+  /**
+   * @param info
+   * @return
+   * @throws IOException
+   * @throws RetriesExhaustedException wrapping a ConnectException if failed
+   * putting up proxy.
+   */
+  private HRegionInterface getServerConnection(HServerInfo info)
+  throws IOException {
+    HConnection connection =
+      HConnectionManager.getConnection(this.master.getConfiguration());
+    HRegionInterface hri = serverConnections.get(info.getServerName());
+    if (hri == null) {
+      LOG.debug("New connection to " + info.getServerName());
+      hri = connection.getHRegionConnection(info.getServerAddress(), false);
+      this.serverConnections.put(info.getServerName(), hri);
     }
+    return hri;
   }
 
   /**