As discussed offline, added service lookups for CoordinatedActivity in the
org.wso2.carbon.core.internal.CarbonCoreServiceComponent and used setter
methods to add the different coordinated activities into a list in the
org.wso2.carbon.core.internal.CarbonCoreDataHolder. Therefore the above
mentioned DataHolder is not used directly and private package is not used.

With this change, I checked the cache invalidation in a GREG cluster and it
works perfectly. When a coordinator goes down, another node immediately
becomes coordinator and the cache invalidation works thereafter too.

Shazni Nazeer

Senior Software Engineer

Mob : +94 715 440 607
LinkedIn : http://lk.linkedin.com/in/shazninazeer
Blog : http://shazninazeer.blogspot.com


On Fri, May 23, 2014 at 4:47 PM, Afkham Azeez <[email protected]> wrote:

>
>
>
> On Fri, May 23, 2014 at 3:25 PM, Shazni Nazeer <[email protected]> wrote:
>
>> Hi All,
>>
>> With the above mentioned code block in HazelcastClusteringAgent and
>> adding List<CoordinatedActivity> to the
>> org.wso2.carbon.clustering.internal.DataHolder (which isn't yet
>> implemented), I could get the cache invalidation work properly in a GREG
>> cluster in two domains. I also could check when the coordinator goes down,
>> another node becomes the coordinator with the above code block mentioned by
>> Azeez. The coordinated activity also needs to be added when the
>> CacheInvalidationPublisher is created, which will eventually be added to
>> List<CoordinatedActivity> in the DataHolder.
>>
>> @Azeez :  The org.wso2.carbon.clustering.internal.DataHolder is an
>> internal package and is not getting exported.
>>
>
> internal packages are not supposed to be exported. Those are private
> packages that are visible only within the scope of the bundle.
>
>
>> Above code block uses it. I could only get this to work by exporting this
>> package.
>> How can we cope up with this?
>>
>>
>> Shazni Nazeer
>>
>> Senior Software Engineer
>>
>> Mob : +94 715 440 607
>> LinkedIn : http://lk.linkedin.com/in/shazninazeer
>> Blog : http://shazninazeer.blogspot.com
>>
>>
>> On Wed, May 21, 2014 at 8:35 PM, Afkham Azeez <[email protected]> wrote:
>>
>>> When clustering is initialized, it spawns a thread, which tries to
>>> acquire the coordinator lock. The relevant code segment from
>>> HazelcastClusteringAgent is as follows:
>>>
>>> // Try to acquire the coordinator lock for the cluster
>>>         new Thread("cluster-coordinator") {
>>>
>>>             @Override
>>>             public void run() {
>>>                 
>>> *hazelcastInstance.getLock("$$cluster#coordinator$#lock").lock();
>>> // code will block here until lock is acquired*
>>>                 isCoordinator = true;
>>>                 logger.info("Local member is the coordinator");
>>>                 // Notify all OSGi services which are waiting for this
>>> member to become the coordinator
>>>                 List<CoordinatedActivity> coordinatedActivities =
>>> DataHolder.getInstance().getCoordinatedActivities();
>>>                 *for (CoordinatedActivity coordinatedActivity :
>>> coordinatedActivities) {*
>>> *                    coordinatedActivity.execute();*
>>> *                }*
>>>             }
>>>         }.start();
>>>
>>>
>>> Pay special attention to the bold lines above. This thread will block if
>>> it cannot acquire the lock. Only one member in the entire cluster will be
>>> able to acquire this distributed lock, and will become the coordinator. All
>>> others will block at the first line in the run method. Suppose the
>>> coordinator dies, then another member will acquire the lock, and it will
>>> unblock from that line, and then go on to call all CoordinatedActivity OSGi
>>> services.
>>>
>>> So, in your code that relies on doing things if you are the coordinator,
>>> first you need to do a ClusteringAgent.isCoordinator check and execute the
>>> relevant code, when your bundle gets activated. You also need to implement
>>> a CoordinatedActivity so that you can get notified if the original
>>> coordinator dies, and another member becomes the coordinator.
>>>
>>> HTH
>>> Azeez
>>>
>>>
>>> On Wed, May 21, 2014 at 5:47 PM, Amal Gunatilake <[email protected]> wrote:
>>>
>>>> Hi Azeez,
>>>>
>>>> Since now we have done the implementation based on the
>>>> CoordinatedActivity interface 
>>>> [1]<https://github.com/wso2/carbon-kernel/blob/development/modules/clustering/src/main/java/org/wso2/carbon/clustering/api/CoordinatedActivity.java>,
>>>> Please enlighten us on how, the execute() method triggering mechanism work?
>>>> Has it been implemented and committed to git hub? Please let us know the
>>>> code snippet location which triggers the execute() method.
>>>>
>>>> Then we can debug the code to check whether the notification mechanism
>>>> works properly to auto subscribe the cache invalidation bundle.
>>>>
>>>> [1]
>>>> https://github.com/wso2/carbon-kernel/blob/development/modules/clustering/src/main/java/org/wso2/carbon/clustering/api/CoordinatedActivity.java
>>>>
>>>> Thank you  & Best regards,
>>>>
>>>> *Amal Gunatilake*
>>>>  Software Engineer
>>>> WSO2 Inc.; http://wso2.com
>>>> lean.enterprise.middleware
>>>>
>>>
>>>
>>>
>>> --
>>> *Afkham Azeez*
>>> Director of Architecture; WSO2, Inc.; http://wso2.com
>>> Member; Apache Software Foundation; http://www.apache.org/
>>> * <http://www.apache.org/>*
>>> *email: **[email protected]* <[email protected]>
>>> * cell: +94 77 3320919 <%2B94%2077%203320919> blog: *
>>> *http://blog.afkham.org* <http://blog.afkham.org>
>>> *twitter: 
>>> **http://twitter.com/afkham_azeez*<http://twitter.com/afkham_azeez>
>>> * linked-in: **http://lk.linkedin.com/in/afkhamazeez
>>> <http://lk.linkedin.com/in/afkhamazeez>*
>>>
>>> *Lean . Enterprise . Middleware*
>>>
>>
>>
>
>
> --
> *Afkham Azeez*
> Director of Architecture; WSO2, Inc.; http://wso2.com
> Member; Apache Software Foundation; http://www.apache.org/
> * <http://www.apache.org/>*
> *email: **[email protected]* <[email protected]>
> * cell: +94 77 3320919 <%2B94%2077%203320919> blog: *
> *http://blog.afkham.org* <http://blog.afkham.org>
> *twitter: **http://twitter.com/afkham_azeez*<http://twitter.com/afkham_azeez>
> * linked-in: **http://lk.linkedin.com/in/afkhamazeez
> <http://lk.linkedin.com/in/afkhamazeez>*
>
> *Lean . Enterprise . Middleware*
>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to