On 10/10/2013 14:41, Konstantin Preißer wrote:
> Hi Mark,
> 
>> -----Original Message-----
>> From: Mark Thomas [mailto:ma...@apache.org]
>> Sent: Thursday, October 10, 2013 10:53 AM
>> To: Tomcat Developers List
>> Subject: Re: svn commit: r1530081 -
>> /tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
>>
>>>> 2) What is a bit more severe is that sometimes after pressing F5 a lot of
>> times, Firefox cannot establish a Websocket connection or make another
>> HTTP request to Tomcat.
>>
>> I can't reproduce this. It is possible that the fix for 1 also fixed
>> this. Can you test?
>>
>> What I did see was that with a lot of refreshes, Firefox ended up with
>> two connections open when it should only have had one. Closing the
>> browser fixed that.
> 
> Thanks.
> 
> Yes, I can still reproduce this on trunk with r1530937.
> 
> What I did was:
> I started Tomcat on a server (connected over internet, not LAN, so the 
> latency/speed is not as good as in a LAN) and started Tomcat. Then, on two 
> machines I opened the drawboard example and drew something on it so that the 
> PNG images gets big (about 500 KB). Then on both machines I simultaneously 
> pressed F5 (either holding it down for some seconds, or press it manually 
> when Firefox was in the middle of receiving the PNG image).
> After some time where I stopped, the drawboard mentioned 3 connected players 
> instead of 2. Then I closed Firefox on machine A - it reported 2 players. I 
> reopened firefox - 3 players. Then I closed Firefox on machine B - still 2 
> players. I reopened Firefox on machine B - then it tried to establish a new 
> websocket connection (the .xhtml page was probably loaded from the cache), 
> but after 5 seconds, it displayed "Websocket closed" so it couldn't establish 
> a new connection - at the same time on the other machine the player count 
> went down to 1.
> Then, on machine B I pressed F5 again, but now Firefox couldn't even load the 
> .xhtml page, and on Tomcat the NPE showed up again:
> 
> 10-Oct-2013 15:05:49.249 SEVERE [http-nio-8783-ClientPoller-0] 
> org.apache.tomcat.util.net.NioEndpoint.processSocket Error allocating socket 
> processor
>  java.lang.NullPointerException
>       at 
> org.apache.tomcat.util.net.NioEndpoint.processSocket(NioEndpoint.java:624)
>       at 
> org.apache.tomcat.util.net.NioEndpoint$Poller.processKey(NioEndpoint.java:1163)
>       at 
> org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1121)
>       at java.lang.Thread.run(Thread.java:724)
> 
> (and as I'm writing this, Firefox still seems to wait for a reply from Tomcat.
> 
> After that I have pressed ESC to abort loading and pressed F5 again, but 
> still no new websocket connection.
> 
> Then I took my TCP forwarder tool to see what data is actually sent on the 
> TCP connections from and to Tomcat. This is what happened:
> 1) Firefox opened Connection 1 and sent "GET 
> /examples/websocket/drawboard.xhtml HTTP/1.1" request to Tomcat.
> 2) On Connection 1, Tomcat replied with a correct reply with the contents of 
> the drawboard.xhtml file.
> 3) On Connection 1, Firefox sent "GET /favicon.ico HTTP/1.1" request to 
> Tomcat.
> 4) Firefox established two new TCP connections (3 and 4) to Tomcat.
> 5) On Connection 1, Tomcat replied with the correct contents of "favicon.ico".
> 6) On Connection 2, Firefox sends "GET /examples/websocket/drawboard 
> HTTP/1.1" request to Tomcat with WebSocket headers to open the WebSocket 
> connection.
> 7) Nothing happens.
> 8) After some time Firefox half-closed connections 1 and 3, and Tomcat 
> full-closed them.
> 9) I shutdown Firefox so connection 2 was half-closed by the Client, but 
> Tomcat did not full-close it so it is still active on the TCP forwarder.
> 
> Then I killed the TCP forwarder and opened it and Firefox again, but this 
> time Tomcat even did not response on the "GET 
> /examples/websocket/drawboard.xhtml HTTP/1.1" request. After I closed 
> Firefox, then again the connection where that request was sent was still hold 
> open by Tomcat. After some minutes, the forwarder received a Timeout error on 
> the TCP connection that was still held open by Tomcat (SocketError: TimedOut 
> (10060)).
> 
> 
> Hope this helps,

I still can't reproduce this. I have Tomcat running in a VM with the
bandwidth limited to 192Kbps and two separate machines accessing the
drawing board. Can you try to reproduce this without the TCP forwarder
in the mix just to make sure there isn't an issue there?

I do see the odd stray connection but it looks to be something the
browser is holding on to. As soon as I close the browser, the connection
drops.

Mark


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to