Details
Description
I recently tried to upgrade from Jetty-6.1.26 to 8.0.4. I did lots of testing beforehand, like replaying 100k requests from our logs in multiple threads, and everything went fine.
But after deployment I got the following Exceptions 1-5 times per minute (we have about 5000 client requests per minute, not counting static content):
...
Caused by: java.io.IOException: Connection reset by peer
at sun.nio.ch.SocketDispatcher.writev0(Native Method)
at sun.nio.ch.SocketDispatcher.writev(SocketDispatcher.java:37)
at sun.nio.ch.IOUtil.write(IOUtil.java:125)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:367)
at java.nio.channels.SocketChannel.write(SocketChannel.java:360)
at org.eclipse.jetty.io.nio.ChannelEndPoint.gatheringFlush(ChannelEndPoint.java:354)
at org.eclipse.jetty.io.nio.ChannelEndPoint.flush(ChannelEndPoint.java:292)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.flush(SelectChannelEndPoint.java:300)
at org.eclipse.jetty.http.HttpGenerator.flushBuffer(HttpGenerator.java:848)
... 107 more
Our live server setup uses Jetty behind an Apache mod_proxy_balancer. In the Apache access logs most of these requests had response code 200. But then I observed a GoogleBot request with such an Exception, and the access log recorded a response code 500. That was when I did a (tedious) rollback to Jetty-6.1.26.
After some googling I found this bug report: http://www-01.ibm.com/support/docview.wss?uid=swg21560045
They claim the error occurs, when a client uses IE8 and closes the tab. I just tried to reproduce this while running Jetty on my Windows XP workstation, and succeeded easily. In contrast to our live setup, there is no Apache or mod_proxy between the browser and the Jetty server in this case.
Unfortunately I have no idea how to reproduce the 500 error code the GoogleBot has seen.