Hi all,
I'm using the Servlet 3.0 async support in Jetty 8, and I'm seeing some weird results with large responses. As long as the response is relatively small, there are no issues, but when it gets to around 2MB or so I start seeing messages that look like:
2013-06-19 21:14:29.672:INFO:oejs.AsyncHttpConnection:EndPoint making no progress: 100 SCEP@163f4e53{l(/10.0.10.243:50747)<->r(/10.0.10.2:8080),s=1,open=true,ishut=false,oshut=false,rb=false,wb=false,w=true,i=0w}-{AsyncHttpConnection@233ac2f3,g=HttpGenerator{s=0,h=-1,b=-1,c=-1},p=HttpParser{s=-14,l=0,c=-3},r=3} AsyncHttpConnection@233ac2f3,g=HttpGenerator{s=0,h=-1,b=-1,c=-1},p=HttpParser{s=-14,l=0,c=-3},r=3
Or even worse, some times I get a subsequent message that the connection has been closed because no progress was made. When the connection is closed, I can see via Wireshark that only part of the response was sent to the client.
I've tried several methods of sending the response including writing to the OutputStream with different buffer sizes and flushing more frequently, but neither of those seems to resolve the problem. I don't see the problem, however, if I access the URL from a browser on localhost, which leads me to believe it may have something to do with the speed of the connection. Strangely, while I was trying to verify that, I also found that it doesn't happen if I add a small delay (Thread.sleep(10)) after writing each chunk.
I'm pretty baffled by what's going on here. Can anyone shed any light on it?
Thanks,
Dave