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()) {