Hi, While going through the code I tried to understand what the threads are doing,
StratosManagerTopologyEventReceiver creates TopologyEventReceiver and add event listerns - Not an iterative process. See the run method just keep on sleeping while terminates become true TopologyEventReceiver creates TopologyEventMessageDelegator and start as a thread creates TopicSubscriber and set TopologyEventMessageListener(which is not a thread) as message listener This too not a iterative thread. TopologyEventMessageDelegator takes messages from the queue and handles it to messsage processor chain This is an iterative process TopicSubscriber Subscribe to topic and and joins with TopicHealthChecker thread. This is a kind of iterative process since it needs to reconnect when desconnected. So TopologyEventMessageDelegator and TopicSubscriber are the only iterative processes which must need to be run as a runnable. If I understood correctly other threads are kept running just to terminate running threads when the component is deactivated for some reason such as stooping the server. They have the following in common in run method while (!terminated) { sleep() } If we use an executor service, we don't need them to keep on running. On Fri, Nov 14, 2014 at 11:53 PM, Imesh Gunaratne <im...@apache.org> wrote: > Yes, better to do this improvement in all the message broker topic > listeners. > > On Fri, Nov 14, 2014 at 1:36 PM, Chamila De Alwis <chami...@wso2.com> > wrote: > >> Hi, >> >> Furthermore, it seems this is a pattern followed all over Stratos, where >> each component has a {component}{topic}EventReceiver runnable. Shouldn't we >> consider them too? If we do, then this will be a major test task. >> >> >> Regards, >> Chamila de Alwis >> Software Engineer | WSO2 | +94772207163 >> Blog: code.chamiladealwis.com >> >> >> >> On Fri, Nov 14, 2014 at 1:17 PM, Imesh Gunaratne <im...@apache.org> >> wrote: >> >>> Yes better to do this improvement Isuru. >>> >>> On Fri, Nov 14, 2014 at 12:20 PM, Udara Liyanage <ud...@wso2.com> wrote: >>> >>>> Hi Isuru, >>>> >>>> +1 pooling for threads is an unnecessary overhead. >>>> >>>> On Fri, Nov 14, 2014 at 12:03 PM, Isuru Haththotuwa <isu...@apache.org> >>>> wrote: >>>> >>>>> Hi Devs, >>>>> >>>>> This thread is to discuss $subject. >>>>> >>>>> Let me explain the current flow, taking Topology event listener in >>>>> Stratos Manager as an example. >>>>> >>>>> 1. SM Topology event receiver is started in a separate thread >>>>> 2. In the SM Topology event receiver thread, we start another >>>>> thread with an instance of messaging's TopologyEventReceiver class. >>>>> 3. Again in the TopologyEventReceiver thread, we create couple of >>>>> more threads for the Topology event message delegator and topic >>>>> subscriber. >>>>> >>>>> IMHO there is no need to create all these threads. AFAIU, what we need >>>>> are three threads which will: >>>>> >>>>> 1. Listen to the events >>>>> 2. Handles delegation >>>>> 3. Updates the local topology models >>>>> >>>>> Also, we can use java ExecutorServices handle graceful >>>>> starting/termination of threads. Currently, we are doing sleeping/looping >>>>> mechanism to keep the threads alive, which can be replaced with >>>>> ExecutorService. >>>>> >>>>> WDYT? >>>>> -- >>>>> Thanks and Regards, >>>>> >>>>> Isuru H. >>>>> +94 716 358 048* <http://wso2.com/>* >>>>> >>>>> >>>>> >>>> >>>> >>>> -- >>>> >>>> Udara Liyanage >>>> Software Engineer >>>> WSO2, Inc.: http://wso2.com >>>> lean. enterprise. middleware >>>> >>>> web: http://udaraliyanage.wordpress.com >>>> phone: +94 71 443 6897 >>>> >>> >>> >>> >>> -- >>> Imesh Gunaratne >>> >>> Technical Lead, WSO2 >>> Committer & PMC Member, Apache Stratos >>> >> >> > > > -- > Imesh Gunaratne > > Technical Lead, WSO2 > Committer & PMC Member, Apache Stratos > -- Udara Liyanage Software Engineer WSO2, Inc.: http://wso2.com lean. enterprise. middleware web: http://udaraliyanage.wordpress.com phone: +94 71 443 6897