On Wed, Sep 9, 2009 at 7:52 PM, Supun Kamburugamuva <supu...@gmail.com>wrote:

> Hi,
> I think this is the price that we have to pay for enabling
> dynamic behavior. If the ESB is under huge load and we synchronize these
> methods it won't scale anyway.
>
> Having two threads load the same resource is tolerable if one thread
> doesn't access the resource while it is initialized halfway way.
>
> One suggestion, I think if we can move the
>
> initialized = true; line 166
>
> statement in the AbstractEndpoint.java to the bottom of the init method it
> will be more safer.
>

What would be safer is to move the above mentioned line of code to the
bottom and make the method synchronized. The AbstractEndpoint#init method
'generally' doesn't get called by multiple threads simultaneously and that's
probably why it is left un-synchronized at the moment. But with dynamic
endpoints (and only with dynamic endpoints) there is a chance that this
method can get called by several threads on the same object.

Devs WDYT? Shall we make this change? Since the method does not get called
too often by concurrent threads I don't think there would be any performance
losses here.

Thanks,
Hiranya


> Thanks,
> Supun..
>
> On Wed, Sep 9, 2009 at 5:48 AM, Hiranya Jayathilaka 
> <hiranya...@gmail.com>wrote:
>
>> Hi Devs,
>> The Axis2MessageContext class uses SynapseConfiguration#getEndpoint and
>> SynapseConfiguration#getSequence methods to gain access to dynamic endpoints
>> and sequences when they are not present in the message context's local
>> store. However these method calls are not synchronized and from the looks of
>> it I feel that if two message contexts try to access the same dynamic
>> resource at the same time there is a chance that SynapseConfiguration would
>> perform two remote registry lookups to fetch the same resource. This won't
>> really cause any erroneous behavior but if the ESB is under a huge load
>> where each message is trying to load a particular dynamic resource things
>> may get out of hands.
>>
>> So does it make sense to bring in some synchronization into the picture?
>> Or have I missed something and the above theory is not applicable?
>>
>> Thanks
>> --
>> Hiranya Jayathilaka
>> Software Engineer;
>> WSO2 Inc.;  http://wso2.org
>> E-mail: hira...@wso2.com;  Mobile: +94 77 633 3491
>> Blog: http://techfeast-hiranya.blogspot.com
>>
>
>
>
> --
> Software Engineer, WSO2 Inc
> http://wso2.org
> supunk.blogspot.com
>
>
>


-- 
Hiranya Jayathilaka
Software Engineer;
WSO2 Inc.;  http://wso2.org
E-mail: hira...@wso2.com;  Mobile: +94 77 633 3491
Blog: http://techfeast-hiranya.blogspot.com

Reply via email to