reactor / reactor-netty

TCP/HTTP/UDP/QUIC client/server with Reactor over Netty

Home Page:https://projectreactor.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Connection prematurely closed DURING response

Aliaksie opened this issue · comments

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

  • org.springframework.boot -> 3.1.5
  • jetty.version -> 11.0.16
  • reactor-netty -> 1.1.11
  • spring-boot-starter-jetty -> 3.1.4

@Aliaksie I'm gonna work on this one.

.retry(1)

I also have the same problem