You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by nd...@apache.org on 2014/03/06 18:42:33 UTC

svn commit: r1574977 - in /hbase/branches/0.98: hbase-client/src/main/java/org/apache/hadoop/hbase/client/ hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/ hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/

Author: ndimiduk
Date: Thu Mar  6 17:42:33 2014
New Revision: 1574977

URL: http://svn.apache.org/r1574977
Log:
HBASE-10432 Rpc retries non-recoverable error

Modified:
    hbase/branches/0.98/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RpcRetryingCaller.java
    hbase/branches/0.98/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java
    hbase/branches/0.98/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java

Modified: hbase/branches/0.98/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RpcRetryingCaller.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.98/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RpcRetryingCaller.java?rev=1574977&r1=1574976&r2=1574977&view=diff
==============================================================================
--- hbase/branches/0.98/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RpcRetryingCaller.java (original)
+++ hbase/branches/0.98/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RpcRetryingCaller.java Thu Mar  6 17:42:33 2014
@@ -206,6 +206,9 @@ public class RpcRetryingCaller<T> {
     if (t instanceof RemoteException) {
       t = ((RemoteException)t).unwrapRemoteException();
     }
+    if (t instanceof LinkageError) {
+      throw new DoNotRetryIOException(t);
+    }
     if (t instanceof ServiceException) {
       ServiceException se = (ServiceException)t;
       Throwable cause = se.getCause();

Modified: hbase/branches/0.98/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.98/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java?rev=1574977&r1=1574976&r2=1574977&view=diff
==============================================================================
--- hbase/branches/0.98/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java (original)
+++ hbase/branches/0.98/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java Thu Mar  6 17:42:33 2014
@@ -56,6 +56,7 @@ import org.apache.hadoop.classification.
 import org.apache.hadoop.classification.InterfaceStability;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.CellScanner;
+import org.apache.hadoop.hbase.DoNotRetryIOException;
 import org.apache.hadoop.hbase.HBaseIOException;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.ServerName;
@@ -920,7 +921,11 @@ public class RpcClient {
       } catch (Throwable t) {
         failedServers.addToFailedServers(remoteId.address);
         IOException e = null;
-        if (t instanceof IOException) {
+        if (t instanceof LinkageError) {
+          // probably the hbase hadoop version does not match the running hadoop version
+          e = new DoNotRetryIOException(t);
+          markClosed(e);
+        } else if (t instanceof IOException) {
           e = (IOException)t;
           markClosed(e);
         } else {

Modified: hbase/branches/0.98/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.98/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java?rev=1574977&r1=1574976&r2=1574977&view=diff
==============================================================================
--- hbase/branches/0.98/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java (original)
+++ hbase/branches/0.98/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java Thu Mar  6 17:42:33 2014
@@ -1711,6 +1711,10 @@ public class RpcServer implements RpcSer
         String msg = "Unable to read call parameter from client " + getHostAddress();
         LOG.warn(msg, t);
 
+        // probably the hbase hadoop version does not match the running hadoop version
+        if (t instanceof LinkageError) {
+          t = new DoNotRetryIOException(t);
+        }
         // If the method is not present on the server, do not retry.
         if (t instanceof UnsupportedOperationException) {
           t = new DoNotRetryIOException(t);
@@ -2041,6 +2045,7 @@ public class RpcServer implements RpcSer
       // putting it on the wire.  Its needed to adhere to the pb Service Interface but we don't
       // need to pass it over the wire.
       if (e instanceof ServiceException) e = e.getCause();
+      if (e instanceof LinkageError) throw new DoNotRetryIOException(e);
       if (e instanceof IOException) throw (IOException)e;
       LOG.error("Unexpected throwable object ", e);
       throw new IOException(e.getMessage(), e);