Repository: hadoop Updated Branches: refs/heads/branch-3.1 e933ed0ee -> 864640c1e
HADOOP-14841 Kms client should disconnect if unable to get output stream from connection. Contributed by Rushabh S Shah (cherry picked from commit 4cdbdce752e192b45c2b9756c2d4bd24ceffdabd) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/864640c1 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/864640c1 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/864640c1 Branch: refs/heads/branch-3.1 Commit: 864640c1e37fc114bb661c6233cd41ce904dc2bd Parents: e933ed0 Author: Rushabh Shah <shahr...@apache.org> Authored: Fri May 4 15:36:13 2018 -0500 Committer: Rushabh Shah <shahr...@apache.org> Committed: Fri May 4 15:49:39 2018 -0500 ---------------------------------------------------------------------- .../hadoop/crypto/key/kms/KMSClientProvider.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/864640c1/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/kms/KMSClientProvider.java ---------------------------------------------------------------------- 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 f97fde7..45097ef 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 @@ -447,12 +447,21 @@ public class KMSClientProvider extends KeyProvider implements CryptoExtension, int expectedResponse, Class<T> klass, int authRetryCount) throws IOException { T ret = null; + OutputStream os = null; try { if (jsonOutput != null) { - writeJson(jsonOutput, conn.getOutputStream()); + os = conn.getOutputStream(); + writeJson(jsonOutput, os); } } catch (IOException ex) { - IOUtils.closeStream(conn.getInputStream()); + // The payload is not serialized if getOutputStream fails. + // Calling getInputStream will issue the put/post request with no payload + // which causes HTTP 500 server error. + if (os == null) { + conn.disconnect(); + } else { + IOUtils.closeStream(conn.getInputStream()); + } throw ex; } if ((conn.getResponseCode() == HttpURLConnection.HTTP_FORBIDDEN --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org