Hi Devs,

In the current Topology implementation, we acquire read/write locks on
Topology from the root level itself. For an example, if we need to modify a
single Cluster object, we still need to acquire a write lock from the
Topology root level. But, this is a costly operation. Specially, with
Service Grouping changes, we would need to traverse through an Application.
Since an Application can be a recursive structure, it can be a time
consuming operation. in such a scenario, if we are to lock the whole
Topology, there will be many threads waiting on that lock.

As a solution, I think we can use hierarchical locking [1]. For an example,
when you need to obtain the write lock for a particular Application, you do
not need to lock the whole tree, but can lock only that Application itself.
However, still we need to get the read locks for the parents.

A separate Lock tree will be maintained for the Topology.

Please share your feedback.

[1].
http://collaboration.cmc.ec.gc.ca/science/rpn/biblio/ddj/Website/articles/DDJ/2008/0801/071201hs01/071201hs01.html

-- 
Thanks and Regards,

Isuru H.
+94 716 358 048* <http://wso2.com/>*

Reply via email to