[NO ISSUE] Don't close Keep-Alive connections on non-200/401 Change-Id: Ia39f8f9030be5a738a71de4c336a98e326ee896f Reviewed-on: https://asterix-gerrit.ics.uci.edu/2972 Sonar-Qube: Jenkins <[email protected]> Reviewed-by: Murtadha Hubail <[email protected]> Tested-by: Jenkins <[email protected]> Integration-Tests: Jenkins <[email protected]>
Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/f7d634c3 Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/f7d634c3 Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/f7d634c3 Branch: refs/heads/master Commit: f7d634c35c7d8827da22feff78896e4fdb16c195 Parents: 3613cab Author: Michael Blow <[email protected]> Authored: Wed Sep 19 12:53:43 2018 -0400 Committer: Michael Blow <[email protected]> Committed: Wed Sep 19 20:57:04 2018 -0700 ---------------------------------------------------------------------- .../apache/hyracks/http/server/ChunkedResponse.java | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/asterixdb/blob/f7d634c3/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/ChunkedResponse.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/ChunkedResponse.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/ChunkedResponse.java index f02654e..a67b40e 100644 --- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/ChunkedResponse.java +++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/ChunkedResponse.java @@ -79,9 +79,8 @@ public class ChunkedResponse implements IServletResponse { response = new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.INTERNAL_SERVER_ERROR); response.headers().set(HttpHeaderNames.TRANSFER_ENCODING, HttpHeaderValues.CHUNKED); keepAlive = HttpUtil.isKeepAlive(request); - if (keepAlive) { - response.headers().set(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE); - } + response.headers().set(HttpHeaderNames.CONNECTION, + keepAlive ? HttpHeaderValues.KEEP_ALIVE : HttpHeaderValues.CLOSE); } @Override @@ -119,17 +118,10 @@ public class ChunkedResponse implements IServletResponse { } future = ctx.channel().close(); } else { - if (keepAlive && response.status() != HttpResponseStatus.UNAUTHORIZED) { - response.headers().remove(HttpHeaderNames.CONNECTION); - } - // we didn't send anything to the user, we need to send an unchunked error response + // we didn't send anything to the user, we need to send an non-chunked error response fullResponse(response.protocolVersion(), response.status(), error == null ? ctx.alloc().buffer(0, 0) : error, response.headers()); } - if (response.status() != HttpResponseStatus.UNAUTHORIZED) { - // since the request failed, we need to close the channel on complete - future.addListener(ChannelFutureListener.CLOSE); - } } done = true; }
