Update: we setup an environment with the old Jetty 9.2 code and this does
not occur. 9.2 does not send the FIN in #5 above, and seems happy to
receive the rest of the content, despite having sent a response already.

On Tue, Sep 25, 2018 at 10:01 AM Tommy Becker <twbec...@gmail.com> wrote:

> Thanks for your response. I managed to snag a tcp dump of what's going on
> in this scenario. From what I can see the sequence of events is the
> following. Recall that our Jetty server is fronted by a Varnish cache.
>
> 1) Varnish sends the headers and initial part of the content for a large
> POST.
> 2) On the Jetty server, we use a streaming parser and begin validating the
> content.
> 3) We detect a problem with the content and throw an exception that
> results in a 400 Bad Request to the client (via JAX-RS exception mapper)
> 4) An ACK is sent for the segment containing the 400 error.
> 5) The Jetty server sends a FIN.
> 6) An ACK is sent for the FIN
> 7) Varnish sends another segment that continues the content from #1.
> 8) The Jetty server sends a RST.
>
> In the server logs, we see an Early EOF from our JAX-RS resource that is
> parsing the content. This all seems pretty ok from the Jetty side, and it
> certainly seems like Varnish is misbehaving here (I'm thinking it may be
> this bug https://github.com/varnishcache/varnish-cache/issues/2332).  But
> I'm still unclear as to why this started after our upgrade from Jetty 9.2
> -> 9.4. Any thoughts?
>
>
>
>
>
>
> On Thu, Sep 20, 2018 at 5:14 AM Simone Bordet <sbor...@webtide.com> wrote:
>
>> Hi,
>>
>> On Wed, Sep 19, 2018 at 4:06 PM Tommy Becker <twbec...@gmail.com> wrote:
>> >
>> > Hi folks,
>> > We recently upgraded our application from Jetty 9.2 to 9.4. After doing
>> so, we've noticed a lot of Early EOF stacktraces happening on POST
>> requests. Of note, our application is fronted by a Varnish cache, which
>> holds connections to the Jetty backend open indefinitely, even though we
>> have the Jetty idle timeout configured to 50s. We're aware this is sub
>> optimal, but it has been this way for some time, and worked fine under
>> Jetty 9.2. To be clear, we do not have any evidence, or even believe that
>> Jetty is doing anything wrong here per-se. But I understand that a fair bit
>> of work happened in Jetty in this area (timeout/socket close) between 9.2
>> and 9.4 and I'm trying to get a high level description of what changed in
>> an attempt to explain the behavior we're seeing now. Any info you could
>> provide would be appreciated!
>> >
>>
>> There have been many changes between Jetty 9.2 and 9.4 in many places.
>> As an example, we have improved and made more compliant/strict HTTP
>> parsing, and that may be the cause of your POSTs not going through.
>>
>> The best thing you can do to figure out this issue is to grab a
>> network trace via Wireshark on the Jetty host, along with possibly a
>> stack trace (that you did not report and you don't even say if it's on
>> client or on server), and possibly server DEBUG logs.
>>
>> The network trace will be important to know who's closing the
>> connection. Stack traces and logs to know why it was closed.
>>
>> --
>> Simone Bordet
>> ----
>> http://cometd.org
>> http://webtide.com
>> Developer advice, training, services and support
>> from the Jetty & CometD experts.
>> _______________________________________________
>> jetty-users mailing list
>> jetty-users@eclipse.org
>> To change your delivery options, retrieve your password, or unsubscribe
>> from this list, visit
>> https://dev.eclipse.org/mailman/listinfo/jetty-users
>>
>
_______________________________________________
jetty-users mailing list
jetty-users@eclipse.org
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users

Reply via email to