This is an automated email from the ASF dual-hosted git repository.

suncairong pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.2 by this push:
     new 42664b6ec2 optimize: rest protocol connection default keepalive 
(#14540)
42664b6ec2 is described below

commit 42664b6ec27dd24da61dcb2347c58aefe43853cc
Author: funkye <[email protected]>
AuthorDate: Fri Aug 16 12:16:46 2024 +0800

    optimize: rest protocol connection default keepalive (#14540)
    
    * optimize: rest protocol connection default keepalive
    
    * optimize: rest protocol connection default keepalive
    
    * optimize: rest protocol connection default keepalive
    
    * optimize: rest protocol connection default keepalive
    
    * optimize: rest protocol connection default keepalive
---
 .../remoting/http/restclient/URLConnectionRestClient.java    |  1 +
 .../dubbo/rpc/protocol/rest/netty/ChunkOutputStream.java     |  2 +-
 .../dubbo/rpc/protocol/rest/netty/NettyHttpResponse.java     | 12 +++++++-----
 3 files changed, 9 insertions(+), 6 deletions(-)

diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/restclient/URLConnectionRestClient.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/restclient/URLConnectionRestClient.java
index 65f20a19f2..54d106bc51 100644
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/restclient/URLConnectionRestClient.java
+++ 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/restclient/URLConnectionRestClient.java
@@ -47,6 +47,7 @@ public class URLConnectionRestClient implements RestClient {
 
         try {
             HttpURLConnection connection = (HttpURLConnection) new 
URL(requestTemplate.getURL()).openConnection();
+            requestTemplate.addHeader("connection", "close");
             connection.setConnectTimeout(clientConfig.getConnectTimeout());
             connection.setReadTimeout(clientConfig.getReadTimeout());
             connection.setRequestMethod(requestTemplate.getHttpMethod());
diff --git 
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/netty/ChunkOutputStream.java
 
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/netty/ChunkOutputStream.java
index dcc602ba01..9cafc0a84e 100644
--- 
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/netty/ChunkOutputStream.java
+++ 
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/netty/ChunkOutputStream.java
@@ -80,7 +80,7 @@ public class ChunkOutputStream extends OutputStream {
         int readable = buffer.readableBytes();
         if (readable == 0) return;
         if (!response.isCommitted()) response.prepareChunkStream();
-        ctx.writeAndFlush(new DefaultHttpContent(buffer.copy()));
+        ctx.write(new DefaultHttpContent(buffer.copy()));
         buffer.clear();
         super.flush();
     }
diff --git 
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/netty/NettyHttpResponse.java
 
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/netty/NettyHttpResponse.java
index d29e194104..24aa8153a7 100644
--- 
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/netty/NettyHttpResponse.java
+++ 
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/netty/NettyHttpResponse.java
@@ -34,6 +34,8 @@ import io.netty.channel.ChannelFutureListener;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.handler.codec.http.DefaultFullHttpResponse;
 import io.netty.handler.codec.http.DefaultHttpResponse;
+import io.netty.handler.codec.http.HttpHeaderNames;
+import io.netty.handler.codec.http.HttpHeaderValues;
 import io.netty.handler.codec.http.HttpHeaders;
 import io.netty.handler.codec.http.HttpHeaders.Names;
 import io.netty.handler.codec.http.HttpMethod;
@@ -200,11 +202,11 @@ public class NettyHttpResponse implements HttpResponse {
     @SuppressWarnings({"rawtypes", "unchecked"})
     public static void transformHeaders(
             NettyHttpResponse nettyResponse, 
io.netty.handler.codec.http.HttpResponse response) {
-        //        if (nettyResponse.isKeepAlive()) {
-        //            response.headers().set(HttpHeaders.Names.CONNECTION, 
HttpHeaders.Values.KEEP_ALIVE);
-        //        } else {
-        //            response.headers().set(HttpHeaders.Names.CONNECTION, 
HttpHeaders.Values.CLOSE);
-        //        }
+        if (nettyResponse.isKeepAlive()) {
+            response.headers().set(HttpHeaderNames.CONNECTION, 
HttpHeaderValues.KEEP_ALIVE);
+        } else {
+            response.headers().set(HttpHeaderNames.CONNECTION, 
HttpHeaderValues.CLOSE);
+        }
 
         for (Map.Entry<String, List<String>> entry :
                 nettyResponse.getOutputHeaders().entrySet()) {

Reply via email to