From f372d3faae48c8e3c54edd1da8efebcaa9ab0e7a Mon Sep 17 00:00:00 2001 From: Yongjun Zhang Date: Tue, 5 Jan 2016 10:58:59 -0800 Subject: [PATCH] HADOOP-12604. Exception may be swallowed in KMSClientProvider. (Yongjun Zhang) (cherry picked from commit 28bd138018bea6fc9c3bfb94c7a4143420f02ced) --- hadoop-common-project/hadoop-common/CHANGES.txt | 3 +++ .../hadoop/crypto/key/kms/KMSClientProvider.java | 12 +++--------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index cd69dcce6c0..a49c95f1e47 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -370,6 +370,9 @@ Release 2.8.0 - UNRELEASED HADOOP-12658. Clear javadoc and check style issues around DomainSocket (Kai Zheng via umamahesh) + HADOOP-12604. Exception may be swallowed in KMSClientProvider. + (Yongjun Zhang) + OPTIMIZATIONS HADOOP-11785. Reduce the number of listStatus operation in distcp diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/kms/KMSClientProvider.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/kms/KMSClientProvider.java index b113cecf4d1..9c381814891 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/kms/KMSClientProvider.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/kms/KMSClientProvider.java @@ -27,6 +27,7 @@ import org.apache.hadoop.crypto.key.KeyProviderDelegationTokenExtension; import org.apache.hadoop.crypto.key.KeyProviderFactory; import org.apache.hadoop.fs.CommonConfigurationKeysPublic; import org.apache.hadoop.fs.Path; +import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.io.Text; import org.apache.hadoop.security.Credentials; import org.apache.hadoop.security.ProviderUtils; @@ -515,7 +516,7 @@ public class KMSClientProvider extends KeyProvider implements CryptoExtension, writeJson(jsonOutput, conn.getOutputStream()); } } catch (IOException ex) { - conn.getInputStream().close(); + IOUtils.closeStream(conn.getInputStream()); throw ex; } if ((conn.getResponseCode() == HttpURLConnection.HTTP_FORBIDDEN @@ -555,15 +556,8 @@ public class KMSClientProvider extends KeyProvider implements CryptoExtension, try { is = conn.getInputStream(); ret = mapper.readValue(is, klass); - } catch (IOException ex) { - if (is != null) { - is.close(); - } - throw ex; } finally { - if (is != null) { - is.close(); - } + IOUtils.closeStream(is); } } return ret;