From ed9806ea40b945df0637c21b68964d1d2bd204f3 Mon Sep 17 00:00:00 2001 From: Zhihai Xu Date: Tue, 27 Oct 2015 09:51:26 -0700 Subject: [PATCH] HADOOP-12178. NPE during handling of SASL setup if problem with SASL resolver class. Contributed by Steve Loughran --- hadoop-common-project/hadoop-common/CHANGES.txt | 3 +++ .../src/main/java/org/apache/hadoop/ipc/Client.java | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 01512bda51..9ba6275409 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -1271,6 +1271,9 @@ Release 2.8.0 - UNRELEASED HADOOP-12457. [JDK8] Fix a failure of compiling common by javadoc. (Akira AJISAKA via ozawa) + HADOOP-12178. NPE during handling of SASL setup if problem with SASL + resolver class. (Steve Loughran via zxu) + OPTIMIZATIONS HADOOP-12051. ProtobufRpcEngine.invoke() should use Exception.toString() diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java index f067d599be..5917e090c9 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java @@ -749,7 +749,12 @@ public class Client { return setupSaslConnection(in2, out2); } }); - } catch (Exception ex) { + } catch (IOException ex) { + if (saslRpcClient == null) { + // whatever happened -it can't be handled, so rethrow + throw ex; + } + // otherwise, assume a connection problem authMethod = saslRpcClient.getAuthMethod(); if (rand == null) { rand = new Random(); @@ -811,7 +816,7 @@ public class Client { if (t instanceof IOException) { markClosed((IOException)t); } else { - markClosed(new IOException("Couldn't set up IO streams", t)); + markClosed(new IOException("Couldn't set up IO streams: " + t, t)); } close(); }