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:44:52 UTC
svn commit: r1574978 - in /hbase/branches/0.96:
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:44:52 2014
New Revision: 1574978
URL: http://svn.apache.org/r1574978
Log:
HBASE-10432 Rpc retries non-recoverable error
Modified:
hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RpcRetryingCaller.java
hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java
hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java
Modified: hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RpcRetryingCaller.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RpcRetryingCaller.java?rev=1574978&r1=1574977&r2=1574978&view=diff
==============================================================================
--- hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RpcRetryingCaller.java (original)
+++ hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RpcRetryingCaller.java Thu Mar 6 17:44:52 2014
@@ -211,6 +211,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.96/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java?rev=1574978&r1=1574977&r2=1574978&view=diff
==============================================================================
--- hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java (original)
+++ hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java Thu Mar 6 17:44:52 2014
@@ -55,6 +55,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;
@@ -915,7 +916,11 @@ private UserProvider userProvider;
} 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.96/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java?rev=1574978&r1=1574977&r2=1574978&view=diff
==============================================================================
--- hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java (original)
+++ hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java Thu Mar 6 17:44:52 2014
@@ -1720,6 +1720,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);
@@ -2214,6 +2218,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);