diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java index 21f45d6d396..1c32657d600 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java @@ -667,6 +667,8 @@ protected HttpURLConnection connect(URL url) throws IOException { url = new URL(conn.getHeaderField("Location")); redirectHost = url.getHost() + ":" + url.getPort(); } finally { + // TODO: consider not calling conn.disconnect() to allow connection reuse + // See http://tinyurl.com/java7-http-keepalive conn.disconnect(); } } @@ -899,7 +901,9 @@ final T getResponse(HttpURLConnection conn) throws IOException { LOG.debug("Response decoding failure.", e); throw ioe; } finally { - conn.disconnect(); + // Don't call conn.disconnect() to allow connection reuse + // See http://tinyurl.com/java7-http-keepalive + conn.getInputStream().close(); } } @@ -946,6 +950,9 @@ public void close() throws IOException { try { validateResponse(op, conn, true); } finally { + // This is a connection to DataNode. Let's disconnect since + // there is little chance that the connection will be reused + // any time soonl conn.disconnect(); } }