On 28/01/2013 13:35, Konstantin Kolinko wrote:
> 2013/1/28 Mark Thomas <ma...@apache.org>:
>> On 26/01/2013 12:30, Konstantin Kolinko wrote:
>>> 2013/1/26 Mark Thomas <ma...@apache.org>:
>>>> kkoli...@apache.org wrote:
>>>>
>>>>> Author: kkolinko
>>>>> Date: Fri Jan 25 22:34:57 2013
>>>>> New Revision: 1438747
>>>>>
>>>>> URL: http://svn.apache.org/viewvc?rev=1438747&view=rev
>>>>> Log:
>>>>> Make the messages list synchronized as a whole, instead of just using a
>>>>> volatile reference to it.
>>>>> I am still observing random failures with TestWsWebSocketContainer, so
>>>>> an issue is not here.
>>>>
>>>> So why make the change?
>>>>
>>>
>>> Because of
>>> http://svn.apache.org/viewvc?view=revision&revision=1437930
>>
>> OK. The log message seemed to suggest the change was pointless. Hence my
>> question.
>>
>>> If you just need to propagate the "messages" reference across threads,
>>> then I think r1437930 should have been more simple: just marking the
>>> field as "final".
>>> If you are protecting access to inner structures of ArrayList class, I
>>> think that marking the reference as volatile is not enough and that
>>> using a synchronized list is more adequate.
>>>
>>> I think "volatile" modifier applies to accessing the filed itself, and
>>> has no effect when you use the value returned by getMessages() or
>>> store it in a local variable.
>>>
>>> Well, I do not see where a concurrency can come from here, so mere
>>> "final" should be enough. The latch did count down (otherwise
>>> assertTrue(latchResult) detected a failure) so either a message was
>>> received or TesterEndpoint.onClose() or TesterEndpoint.onError() was
>>> called. The latch should provide synchronization between threads.
>>
>> Having just read up on "happens-before" I do not believe the list needs
>> to be synchronised.
> 
> Agreed.
> 
> I am OK with leaving it as is (as well as with CopyOnWriteArrayList
> from r1439351). It should not matter for this test case.
> 
>> I believe the root cause of the problem I was trying
>> to solve was fixed in r1437930 when I switched the order of adding the
>> message to the list and counting down the latch.
> 
> Agreed. It should be it.
> (For the record, you obviously meant r1438229 and the change in
> onMessage(..) in TestWsWebSocketContainer.java)
> 
> BTW, the test still fails for BIO in the last two buildbot runs. (NIO was OK).

Yeah, something isn't quite right yet. I need to dig into this some more.

Mark


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

Reply via email to