+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 <[email protected]>
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 <[email protected]> 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 <[email protected]>
>> 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 <[email protected]>
>>> 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 <[email protected]>
>>>> wrote:
>>>>
>>>>> Yes better to do this improvement Isuru.
>>>>>
>>>>> On Fri, Nov 14, 2014 at 12:20 PM, Udara Liyanage <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> Hi Isuru,
>>>>>>
>>>>>> +1 pooling for threads is an unnecessary overhead.
>>>>>>
>>>>>> On Fri, Nov 14, 2014 at 12:03 PM, Isuru Haththotuwa <
>>>>>> [email protected]> 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: [email protected] blog: http://lahiruwrites.blogspot.com/
linked-in: http://lk.linkedin.com/pub/lahiru-sandaruwan/16/153/146

Reply via email to