Repository: knox Updated Branches: refs/heads/v0.6.0 d3c605982 -> 165abded4
KNOX-558: HttpClient connections are not always returned to the pool for HBase on Windows (cherry picked from commit bd0586ddb8fae96cb5620d5db42a150c4296963f) Project: http://git-wip-us.apache.org/repos/asf/knox/repo Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/165abded Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/165abded Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/165abded Branch: refs/heads/v0.6.0 Commit: 165abded45c5428946ab9cbbf01e52e7ba7af70c Parents: d3c6059 Author: Kevin Minder <[email protected]> Authored: Wed Jun 10 12:13:19 2015 -0400 Committer: Kevin Minder <[email protected]> Committed: Wed Jun 10 12:14:30 2015 -0400 ---------------------------------------------------------------------- .../hadoop/gateway/dispatch/DefaultDispatch.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/knox/blob/165abded/gateway-spi/src/main/java/org/apache/hadoop/gateway/dispatch/DefaultDispatch.java ---------------------------------------------------------------------- diff --git a/gateway-spi/src/main/java/org/apache/hadoop/gateway/dispatch/DefaultDispatch.java b/gateway-spi/src/main/java/org/apache/hadoop/gateway/dispatch/DefaultDispatch.java index ad6894a..8165df5 100644 --- a/gateway-spi/src/main/java/org/apache/hadoop/gateway/dispatch/DefaultDispatch.java +++ b/gateway-spi/src/main/java/org/apache/hadoop/gateway/dispatch/DefaultDispatch.java @@ -48,6 +48,7 @@ import org.apache.http.util.EntityUtils; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.Closeable; import java.io.IOException; import java.io.InputStream; import java.net.URI; @@ -181,7 +182,22 @@ public class DefaultDispatch extends AbstractGatewayDispatch { // outboundResponse.setContentLength( (int)contentLength ); // } //] - writeResponse(inboundRequest, outboundResponse, entity.getContent()); + InputStream stream = entity.getContent(); + try { + writeResponse( inboundRequest, outboundResponse, stream ); + } finally { + closeInboundResponse( inboundResponse, stream ); + } + } + } + + protected void closeInboundResponse( HttpResponse response, InputStream stream ) throws IOException { + try { + stream.close(); + } finally { + if( response instanceof Closeable ) { + ( (Closeable)response).close(); + } } }
