diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/ObserverReadProxyProvider.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/ObserverReadProxyProvider.java index 67c34fe0174..e3753c3a590 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/ObserverReadProxyProvider.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/ObserverReadProxyProvider.java @@ -19,6 +19,7 @@ import java.io.Closeable; import java.io.IOException; +import java.io.InterruptedIOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Proxy; @@ -412,6 +413,13 @@ public Object invoke(Object proxy, final Method method, final Object[] args) throw ite.getCause(); } Exception e = (Exception) ite.getCause(); + if (e instanceof InterruptedIOException || + e instanceof InterruptedException) { + // If interrupted, do not retry. + LOG.warn("Invocation returned interrupted exception on [{}];", + current.proxyInfo, e); + throw e; + } if (e instanceof RemoteException) { RemoteException re = (RemoteException) e; Exception unwrapped = re.unwrapRemoteException(