HADOOP-14841 Kms client should disconnect if unable to get output stream from connection. Contributed by Rushabh S Shah
(cherry picked from commit 4cdbdce752
)
This commit is contained in:
parent
e933ed0ee3
commit
864640c1e3
|
@ -447,12 +447,21 @@ public class KMSClientProvider extends KeyProvider implements CryptoExtension,
|
||||||
int expectedResponse, Class<T> klass, int authRetryCount)
|
int expectedResponse, Class<T> klass, int authRetryCount)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
T ret = null;
|
T ret = null;
|
||||||
|
OutputStream os = null;
|
||||||
try {
|
try {
|
||||||
if (jsonOutput != null) {
|
if (jsonOutput != null) {
|
||||||
writeJson(jsonOutput, conn.getOutputStream());
|
os = conn.getOutputStream();
|
||||||
|
writeJson(jsonOutput, os);
|
||||||
}
|
}
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
|
// 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());
|
IOUtils.closeStream(conn.getInputStream());
|
||||||
|
}
|
||||||
throw ex;
|
throw ex;
|
||||||
}
|
}
|
||||||
if ((conn.getResponseCode() == HttpURLConnection.HTTP_FORBIDDEN
|
if ((conn.getResponseCode() == HttpURLConnection.HTTP_FORBIDDEN
|
||||||
|
|
Loading…
Reference in New Issue