On 13/04/18 09:47, Mark Thomas wrote:
> On 13/04/18 03:13, Funian Li wrote:
>> 2018-04-12 4:19 GMT+08:00 Mark Thomas <ma...@apache.org>:
>>
>>> On 11/04/18 09:50, Funian Li wrote:
>>>>  Dear All,
>>>>
>>>>   A problem happen when tomcat websocket server was used.
>>>
>>>> Exact Tomcat version?
>>>
>>>> If not 8.5.30, does the problem still occur if you upgrade to 8.5.30?
>>>
>>>> Mark
>>>
>>
>>  Yes , the exact Tomcat version is 8.5.30, shall i upgrade to tomcat 9.0 ?
> 
> Thanks for the version information.
> 
> An upgrade to 9.0.x is unlikely to help. The code is almost identical
> between 8.5.x and 9.0.x.
> 
> The next step will be to try the test case you provided to see if the
> problem can be reproduced.

Adding the code to my (resurrected) github project for Tomcat test
cases[1] and formatting the code made the root cause obvious.

As per the Java WebSocket specification:
<quote>
[WSC-5.1-1] In all cases, the implementation must not invoke an
endpoint instance with more than one thread per peer at a time.
</quote>

In onMessage() a loop is entered (on the container thread for that peer)
that can never be exited because the stop message will never be
processed because that requires a container thread and the only
container thread allowed is processing the loop.

The fix is to spwan a new thread in onMessage() and use that to write
the messages.

Mark


[1] https://github.com/markt-asf/tomcat-bugs

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

Reply via email to