Skip to content

Commit a9c84e8

Browse files
author
wuayee
committed
[fit] keep NettyResponse from closing prematurely
1 parent 525f83d commit a9c84e8

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

framework/fit/java/fit-builtin/plugins/fit-http-server-netty/src/main/java/modelengine/fit/http/server/netty/HttpClassicRequestAssembler.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,9 +163,12 @@ private void handleHttpRequest(ChannelHandlerContext ctx, HttpRequest request) {
163163

164164
private void doHttpRequest(ChannelHandlerContext ctx, NettyHttpServerRequest request) {
165165
request.setExecuteThread(Thread.currentThread());
166+
167+
// 将NettyHttpServerResponse 直接作为参数传入,避免作为独立的 try-with-resources 变量
168+
// 防止其在 try 块结束时过早关闭,导致在 sse 发送数据的场景下,对 response 的写入操作失败
166169
try (HttpClassicServerRequest classicRequest = HttpClassicServerRequest.create(this.server, request);
167-
NettyHttpServerResponse response = new NettyHttpServerResponse(ctx, request);
168-
HttpClassicServerResponse classicResponse = HttpClassicServerResponse.create(this.server, response)) {
170+
HttpClassicServerResponse classicResponse = HttpClassicServerResponse.create(this.server,
171+
new NettyHttpServerResponse(ctx, request))) {
169172
HttpHandler handler = this.server.httpDispatcher().dispatch(classicRequest, classicResponse);
170173
classicRequest.attributes().set(PATH_PATTERN.key(), handler.pathPattern());
171174
classicRequest.attributes().set(HTTP_HANDLER.key(), handler);

0 commit comments

Comments
 (0)