From 6dfea05049c1367dee6311cbc2c0c24df1dbae8e Mon Sep 17 00:00:00 2001 From: Yongjun Zhang Date: Fri, 2 Feb 2018 22:58:44 -0800 Subject: [PATCH] HDFS-13100. Handle IllegalArgumentException when GETSERVERDEFAULTS is not implemented in webhdfs. Contributed by Aaron T. Myers and Yongjun Zhang. (cherry picked from commit 4e9a59ce16e81b4bd6fae443a997ef24d588a6e8) --- .../org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java index ab3ed66bf24..3ec680e09f3 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java @@ -1911,8 +1911,17 @@ public URI getKeyProviderUri() throws IOException { try { keyProviderUri = getServerDefaults().getKeyProviderUri(); } catch (UnsupportedOperationException e) { - // This means server doesn't supports GETSERVERDEFAULTS call. + // This means server doesn't support GETSERVERDEFAULTS call. // Do nothing, let keyProviderUri = null. + } catch (RemoteException e) { + if (e.getClassName() != null && + e.getClassName().equals("java.lang.IllegalArgumentException")) { + // See HDFS-13100. + // This means server doesn't support GETSERVERDEFAULTS call. + // Do nothing, let keyProviderUri = null. + } else { + throw e; + } } return HdfsKMSUtil.getKeyProviderUri(ugi, getUri(), keyProviderUri, getConf());