Could be https://issues.apache.org/jira/browse/TAP5-1873 fixed? There is a
missing parameter in a call and improved exception logging.
Thanks,
Denis
Jun 11, 2012 v 8:36 PM, Howard Lewis Ship:
> On Wed, Jun 6, 2012 at 5:37 PM, Cezary Biernacki <[email protected]> wrote:
>> On Thu, Jun 7, 2012 at 1:27 AM, Howard Lewis Ship <[email protected]> wrote:
>>
>>> You can even omit synchronized and volatile IFF:
>>> - only a single shared field is updated
>>> - it is ok for a race condition to exist that would create the value
>>> on multiple threads
>>> - (I learned this by getting schooled on the subject by Rich Hickey)
>>>
>>> There are many things in Tapestry that don't fit this model.
>>> Sometimes the value being lazily created is so expensive, it would be
>>> invalid to allow multiple threads to create it. In other cases, more
>>> than one shared field is updated.
>>>
>>
>>
>> Hm, but the second check inside 'synchronized' block is supposed to avoid
>> creating value on multiple threads. For example:
>>
>> private volatile Messages messages;
>>
>> public Messages getMessages()
>> {
>> if (messages != null)
>> {
>> return messages;
>> }
>>
>> synchronized (this) {
>> if (messages != null)
>> {
>> return messages;
>> }
>>
>> messages = elementResources.getMessages(componentModel);
>> // <--- only called if no other thread did this before
>> }
>>
>> return messages;
>> }
>>
>>
>>
>
> After review, in this one specific case, I've removed the concurrency
> code; the change to the messages field is individual and atomic, and
> the value from the elementResources.getMessages() method is cached by
> the eventual service implementation.
>
>>
>> Cezary
>
>
>
> --
> Howard M. Lewis Ship
>
> Creator of Apache Tapestry
>
> The source for Tapestry training, mentoring and support. Contact me to
> learn how I can get you up and productive in Tapestry fast!
>
> (971) 678-5210
> http://howardlewisship.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>