reactor / reactor-netty

TCP/HTTP/UDP/QUIC client/server with Reactor over Netty
https://projectreactor.io
Apache License 2.0
2.59k stars 646 forks source link

Connection prematurely closed DURING response #2944

Open Aliaksie opened 1 year ago

Aliaksie commented 1 year ago

Possible similar to link or link

-> client send large multipart RQ -> server receive
-> check size and throw 413 -> we catch it in our error handler and return 413 with json RS -> server send completed -> server on TERMINATED check if it consume full RQ -> send new IOException("unconsumed input") and close connection

-> if the client has not yet completed processing, then it will receive an error and crash, otherwise it can complete the request smoothly (for example turn on DEBUG logs for jetty server).

Expected Behavior

the client will complete without error. I got 413 with json body.

Actual Behavior

the client does not complete consistently. I often get an error:

reactor.netty.http.client.PrematureCloseException: Connection prematurely closed DURING response
reactor.core.Exceptions$ReactiveException: reactor.netty.http.client.PrematureCloseException: Connection prematurely closed DURING response

Steps to Reproduce

check the demo-repo

Possible Solution

add .header( "Connection", "close" ) for file upload than here _generator.isPersistent() will always false

Your Environment

violetagg commented 11 months ago

@Aliaksie I'm gonna work on this one.

hakusai22 commented 9 months ago

.retry(1)

weiyouren commented 9 months ago

I also have the same problem

yvzhu0407 commented 7 months ago

@weiyouren how do you fix this error?