You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stratos.apache.org by Akila Ravihansa Perera <ra...@wso2.com> on 2015/07/21 21:02:08 UTC
Re: [Messaging] Refactoring the Event Listeners
Hi,
While going through the changes that were made to event listeners, I
noticed that InstanceNotifierEventReceiver [1] does not have an executor
service while other event listeners do. Was this done on purpose?
[1]
https://github.com/apache/stratos/blob/master/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/instance/notifier/InstanceNotifierEventReceiver.java
Thanks.
On Sun, Nov 16, 2014 at 10:10 PM, Lahiru Sandaruwan <la...@wso2.com>
wrote:
> +1 for the improvement Isuru. Probably we should do a hangout on these
> implementation.
>
> On Sun, Nov 16, 2014 at 8:06 PM, Isuru Haththotuwa <is...@apache.org>
> wrote:
>
>> Thanks all. Furthermore, I plan to do the following refactoring:
>>
>>
>> - An abstraction and MQTT based implementation of a message receiver
>> which can handle the re-connection logic that we are currently missing.
>> - Abstraction for MessageDelegators
>> - Abstraction for local event receiver
>>
>>
>>
>> On Sat, Nov 15, 2014 at 1:14 PM, Udara Liyanage <ud...@wso2.com> wrote:
>>
>>> 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 <ch...@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 <
>>>>>>> isuruh@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
>>>
>>> --
>>> Thanks and Regards,
>>>
>>> Isuru H.
>>> +94 716 358 048* <http://wso2.com/>*
>>>
>>>
>>> * <http://wso2.com/>*
>>>
>>>
>>>
>
>
> --
> --
> Lahiru Sandaruwan
> Committer and PMC member, Apache Stratos,
> Senior Software Engineer,
> WSO2 Inc., http://wso2.com
> lean.enterprise.middleware
>
> email: lahirus@wso2.com blog: http://lahiruwrites.blogspot.com/
> linked-in: http://lk.linkedin.com/pub/lahiru-sandaruwan/16/153/146
>
>
--
Akila Ravihansa Perera
Software Engineer, WSO2
Blog: http://ravihansa3000.blogspot.com
Re: [Messaging] Refactoring the Event Listeners
Posted by Gayan Gunarathne <ga...@wso2.com>.
Hi Akila,
On Wed, Jul 22, 2015 at 12:32 AM, Akila Ravihansa Perera <ravihansa@wso2.com
> wrote:
> Hi,
>
> While going through the changes that were made to event listeners, I
> noticed that InstanceNotifierEventReceiver [1] does not have an executor
> service while other event listeners do. Was this done on purpose?
>
> [1]
> https://github.com/apache/stratos/blob/master/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/instance/notifier/InstanceNotifierEventReceiver.java
>
We can add the executor service to that InstanceNotifierEventReceiver
listener too.
>
> Thanks.
>
> On Sun, Nov 16, 2014 at 10:10 PM, Lahiru Sandaruwan <la...@wso2.com>
> wrote:
>
>> +1 for the improvement Isuru. Probably we should do a hangout on these
>> implementation.
>>
>> On Sun, Nov 16, 2014 at 8:06 PM, Isuru Haththotuwa <is...@apache.org>
>> wrote:
>>
>>> Thanks all. Furthermore, I plan to do the following refactoring:
>>>
>>>
>>> - An abstraction and MQTT based implementation of a message receiver
>>> which can handle the re-connection logic that we are currently missing.
>>> - Abstraction for MessageDelegators
>>> - Abstraction for local event receiver
>>>
>>>
>>>
>>> On Sat, Nov 15, 2014 at 1:14 PM, Udara Liyanage <ud...@wso2.com> wrote:
>>>
>>>> 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 <ch...@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 <
>>>>>>>> isuruh@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
>>>>
>>>> --
>>>> Thanks and Regards,
>>>>
>>>> Isuru H.
>>>> +94 716 358 048* <http://wso2.com/>*
>>>>
>>>>
>>>> * <http://wso2.com/>*
>>>>
>>>>
>>>>
>>
>>
>> --
>> --
>> Lahiru Sandaruwan
>> Committer and PMC member, Apache Stratos,
>> Senior Software Engineer,
>> WSO2 Inc., http://wso2.com
>> lean.enterprise.middleware
>>
>> email: lahirus@wso2.com blog: http://lahiruwrites.blogspot.com/
>> linked-in: http://lk.linkedin.com/pub/lahiru-sandaruwan/16/153/146
>>
>>
>
>
> --
> Akila Ravihansa Perera
> Software Engineer, WSO2
>
> Blog: http://ravihansa3000.blogspot.com
>
--
Gayan Gunarathne
Technical Lead, WSO2 Inc. (http://wso2.com)
Committer & PMC Member, Apache Stratos
email : gayang@wso2.com | mobile : +94 766819985