Browse Source

HADOOP-12604. Exception may be swallowed in KMSClientProvider. (Yongjun Zhang)

(cherry picked from commit 28bd138018bea6fc9c3bfb94c7a4143420f02ced)
Yongjun Zhang 9 năm trước cách đây
mục cha
commit
fc6c940464

+ 3 - 0
hadoop-common-project/hadoop-common/CHANGES.txt

@@ -389,6 +389,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

+ 3 - 9
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;