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. 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* >
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
