You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by Hiranya Jayathilaka <hi...@gmail.com> on 2009/09/11 12:59:53 UTC

Buggy Code in Tasks Module?

Hi Devs,

I ran into some buggy looking code related to tasks. When a new task is
created the SimpleQuartz#init method is called. There we get a task
scheduler instance using the following piece of code.

TaskScheduler taskScheduler = TaskSchedulerFactory.getTaskScheduler(

SynapseConstants.SYNAPSE_STARTUP_TASK_SCHEDULER);

Then when a task is stopped/removed SimpleQuartz#destroy method is called.
There we try to get the task scheduler using the following line of code.

TaskScheduler taskScheduler = taskHelper.getTaskScheduler();

The task schedulers returned at the two occasions are in fact different
(confirmed by debugging). Therefore when a task is removed from the system
at runtime, things are not cleaned up properly and the task will continue to
run in the background. Also the task scheduler instance set to the task
helper is never initialized. That is another problem I encountered.

I feel that these are actually bugs. Can somebody who's more familiar with
the Synapse tasks module shed some light on the subject? If somebody can
confirm I can start working on fixing them.

Thanks
-- 
Hiranya Jayathilaka
Software Engineer;
WSO2 Inc.;  http://wso2.org
E-mail: hiranya@wso2.com;  Mobile: +94 77 633 3491
Blog: http://techfeast-hiranya.blogspot.com

Re: Buggy Code in Tasks Module?

Posted by indika kumara <in...@gmail.com>.
Hiranya ...Thanks Lots ..

Thanks
Indika

On Sun, Sep 13, 2009 at 4:08 PM, Hiranya Jayathilaka
<hi...@gmail.com> wrote:
> Hi Indika,
>
> On Sun, Sep 13, 2009 at 11:56 AM, indika kumara <in...@gmail.com>
> wrote:
>>
>> Thanks Hiranya for point out this error… Those are my faults
>>
>> TaskSchedulerFactory is the initially written code to get / create a
>> TaskScheduler
>>
>> SynapseConstants.SYNAPSE_STARTUP_TASK_SCHEDULER is also old constant
>> prior to move code into a new task module. After that it should uses
>> TaskConstants.TASK_SCHEDULER.
>>
>> Unforunaly …seems, I have forgotten to remove it...
>>
>> TaskScheduler taskScheduler = TaskSchedulerFactory.getTaskScheduler(
>>                    SynapseConstants.SYNAPSE_STARTUP_TASK_SCHEDULER);
>>
>> This is also the old code prior to add TaskHelper... seems I have
>> forgotten to remove this too...
>>
>> Really TaskHelper should rename to Task Component Manager or something
>>
>> And within method TaskHelper.init … I didn’t initialize actual
>> TaskScheduler to make it late until first task is run.
>>
>> Fix …
>>
>> Anything,   begin with SynapseConstants.* should be removed only uses
>> constant in Task module
>>
>> Rename TaskHelper to Task Component Manager to something
>>
>> Then uses that class to init task component and get resources inside
>> task component. (i.e. task scheduler and task  description repository)
>> … simply consider TaskSchedulerFactory as a internal class  and
>> TaskHelper as the public class
>>
>> Hiranya … I haven’t any time these day to fix and test ..and it is
>> great if you can do this …and in a proper way.
>
> Thanks for the detailed explanation. I will make sure that these issues get
> fixed before the 1.3 release.
> Thanks,
> Hiranya
>
>>
>> Thanks
>> Indika
>>
>> On Fri, Sep 11, 2009 at 5:08 PM, Hiranya Jayathilaka
>> <hi...@gmail.com> wrote:
>> > FYI this is how we initialize the TaskHelper.
>> >
>> > taskHelper.init(
>> >
>> > TaskDescriptionRepositoryFactory.getTaskDescriptionRepository(
>> >
>> > TaskConstants.TASK_DESCRIPTION_REPOSITORY),
>> >
>> > TaskSchedulerFactory.getTaskScheduler(TaskConstants.TASK_SCHEDULER));
>> >
>> > Note that we use one task scheduler to initialize the helper and use a
>> > different one when initializing SimpleQuartz instances.
>> >
>> > Thanks,
>> > Hiranya
>> >
>> > On Fri, Sep 11, 2009 at 4:29 PM, Hiranya Jayathilaka
>> > <hi...@gmail.com>
>> > wrote:
>> >>
>> >> Hi Devs,
>> >>
>> >> I ran into some buggy looking code related to tasks. When a new task is
>> >> created the SimpleQuartz#init method is called. There we get a task
>> >> scheduler instance using the following piece of code.
>> >>
>> >> TaskScheduler taskScheduler = TaskSchedulerFactory.getTaskScheduler(
>> >>
>> >> SynapseConstants.SYNAPSE_STARTUP_TASK_SCHEDULER);
>> >>
>> >> Then when a task is stopped/removed SimpleQuartz#destroy method is
>> >> called.
>> >> There we try to get the task scheduler using the following line of
>> >> code.
>> >>
>> >> TaskScheduler taskScheduler = taskHelper.getTaskScheduler();
>> >>
>> >> The task schedulers returned at the two occasions are in fact different
>> >> (confirmed by debugging). Therefore when a task is removed from the
>> >> system
>> >> at runtime, things are not cleaned up properly and the task will
>> >> continue to
>> >> run in the background. Also the task scheduler instance set to the task
>> >> helper is never initialized. That is another problem I encountered.
>> >>
>> >> I feel that these are actually bugs. Can somebody who's more familiar
>> >> with
>> >> the Synapse tasks module shed some light on the subject? If somebody
>> >> can
>> >> confirm I can start working on fixing them.
>> >>
>> >> Thanks
>> >> --
>> >> Hiranya Jayathilaka
>> >> Software Engineer;
>> >> WSO2 Inc.;  http://wso2.org
>> >> E-mail: hiranya@wso2.com;  Mobile: +94 77 633 3491
>> >> Blog: http://techfeast-hiranya.blogspot.com
>> >
>> >
>> >
>> > --
>> > Hiranya Jayathilaka
>> > Software Engineer;
>> > WSO2 Inc.;  http://wso2.org
>> > E-mail: hiranya@wso2.com;  Mobile: +94 77 633 3491
>> > Blog: http://techfeast-hiranya.blogspot.com
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@synapse.apache.org
>> For additional commands, e-mail: dev-help@synapse.apache.org
>>
>
>
>
> --
> Hiranya Jayathilaka
> Software Engineer;
> WSO2 Inc.;  http://wso2.org
> E-mail: hiranya@wso2.com;  Mobile: +94 77 633 3491
> Blog: http://techfeast-hiranya.blogspot.com
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@synapse.apache.org
For additional commands, e-mail: dev-help@synapse.apache.org


Re: Buggy Code in Tasks Module?

Posted by Hiranya Jayathilaka <hi...@gmail.com>.
Hi Indika,

On Sun, Sep 13, 2009 at 11:56 AM, indika kumara <in...@gmail.com>wrote:

> Thanks Hiranya for point out this error… Those are my faults
>
> TaskSchedulerFactory is the initially written code to get / create a
> TaskScheduler
>
> SynapseConstants.SYNAPSE_STARTUP_TASK_SCHEDULER is also old constant
> prior to move code into a new task module. After that it should uses
> TaskConstants.TASK_SCHEDULER.
>
> Unforunaly …seems, I have forgotten to remove it...
>
> TaskScheduler taskScheduler = TaskSchedulerFactory.getTaskScheduler(
>                    SynapseConstants.SYNAPSE_STARTUP_TASK_SCHEDULER);
>
> This is also the old code prior to add TaskHelper... seems I have
> forgotten to remove this too...
>
> Really TaskHelper should rename to Task Component Manager or something
>
> And within method TaskHelper.init … I didn’t initialize actual
> TaskScheduler to make it late until first task is run.
>
> Fix …
>
> Anything,   begin with SynapseConstants.* should be removed only uses
> constant in Task module
>
> Rename TaskHelper to Task Component Manager to something
>
> Then uses that class to init task component and get resources inside
> task component. (i.e. task scheduler and task  description repository)
> … simply consider TaskSchedulerFactory as a internal class  and
> TaskHelper as the public class
>
> Hiranya … I haven’t any time these day to fix and test ..and it is
> great if you can do this …and in a proper way.
>

Thanks for the detailed explanation. I will make sure that these issues get
fixed before the 1.3 release.

Thanks,
Hiranya


>
> Thanks
> Indika
>
> On Fri, Sep 11, 2009 at 5:08 PM, Hiranya Jayathilaka
> <hi...@gmail.com> wrote:
> > FYI this is how we initialize the TaskHelper.
> >
> > taskHelper.init(
> >
> > TaskDescriptionRepositoryFactory.getTaskDescriptionRepository(
> >
> TaskConstants.TASK_DESCRIPTION_REPOSITORY),
> >
> > TaskSchedulerFactory.getTaskScheduler(TaskConstants.TASK_SCHEDULER));
> >
> > Note that we use one task scheduler to initialize the helper and use a
> > different one when initializing SimpleQuartz instances.
> >
> > Thanks,
> > Hiranya
> >
> > On Fri, Sep 11, 2009 at 4:29 PM, Hiranya Jayathilaka <
> hiranya911@gmail.com>
> > wrote:
> >>
> >> Hi Devs,
> >>
> >> I ran into some buggy looking code related to tasks. When a new task is
> >> created the SimpleQuartz#init method is called. There we get a task
> >> scheduler instance using the following piece of code.
> >>
> >> TaskScheduler taskScheduler = TaskSchedulerFactory.getTaskScheduler(
> >>
> >> SynapseConstants.SYNAPSE_STARTUP_TASK_SCHEDULER);
> >>
> >> Then when a task is stopped/removed SimpleQuartz#destroy method is
> called.
> >> There we try to get the task scheduler using the following line of code.
> >>
> >> TaskScheduler taskScheduler = taskHelper.getTaskScheduler();
> >>
> >> The task schedulers returned at the two occasions are in fact different
> >> (confirmed by debugging). Therefore when a task is removed from the
> system
> >> at runtime, things are not cleaned up properly and the task will
> continue to
> >> run in the background. Also the task scheduler instance set to the task
> >> helper is never initialized. That is another problem I encountered.
> >>
> >> I feel that these are actually bugs. Can somebody who's more familiar
> with
> >> the Synapse tasks module shed some light on the subject? If somebody can
> >> confirm I can start working on fixing them.
> >>
> >> Thanks
> >> --
> >> Hiranya Jayathilaka
> >> Software Engineer;
> >> WSO2 Inc.;  http://wso2.org
> >> E-mail: hiranya@wso2.com;  Mobile: +94 77 633 3491
> >> Blog: http://techfeast-hiranya.blogspot.com
> >
> >
> >
> > --
> > Hiranya Jayathilaka
> > Software Engineer;
> > WSO2 Inc.;  http://wso2.org
> > E-mail: hiranya@wso2.com;  Mobile: +94 77 633 3491
> > Blog: http://techfeast-hiranya.blogspot.com
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@synapse.apache.org
> For additional commands, e-mail: dev-help@synapse.apache.org
>
>


-- 
Hiranya Jayathilaka
Software Engineer;
WSO2 Inc.;  http://wso2.org
E-mail: hiranya@wso2.com;  Mobile: +94 77 633 3491
Blog: http://techfeast-hiranya.blogspot.com

Re: Buggy Code in Tasks Module?

Posted by indika kumara <in...@gmail.com>.
Thanks Hiranya for point out this error… Those are my faults

TaskSchedulerFactory is the initially written code to get / create a
TaskScheduler

SynapseConstants.SYNAPSE_STARTUP_TASK_SCHEDULER is also old constant
prior to move code into a new task module. After that it should uses
TaskConstants.TASK_SCHEDULER.

Unforunaly …seems, I have forgotten to remove it...

TaskScheduler taskScheduler = TaskSchedulerFactory.getTaskScheduler(
                    SynapseConstants.SYNAPSE_STARTUP_TASK_SCHEDULER);

This is also the old code prior to add TaskHelper... seems I have
forgotten to remove this too...

Really TaskHelper should rename to Task Component Manager or something

And within method TaskHelper.init … I didn’t initialize actual
TaskScheduler to make it late until first task is run.

Fix …

Anything,   begin with SynapseConstants.* should be removed only uses
constant in Task module

Rename TaskHelper to Task Component Manager to something

Then uses that class to init task component and get resources inside
task component. (i.e. task scheduler and task  description repository)
… simply consider TaskSchedulerFactory as a internal class  and
TaskHelper as the public class

Hiranya … I haven’t any time these day to fix and test ..and it is
great if you can do this …and in a proper way.

Thanks
Indika

On Fri, Sep 11, 2009 at 5:08 PM, Hiranya Jayathilaka
<hi...@gmail.com> wrote:
> FYI this is how we initialize the TaskHelper.
>
> taskHelper.init(
>
> TaskDescriptionRepositoryFactory.getTaskDescriptionRepository(
>                                 TaskConstants.TASK_DESCRIPTION_REPOSITORY),
>
> TaskSchedulerFactory.getTaskScheduler(TaskConstants.TASK_SCHEDULER));
>
> Note that we use one task scheduler to initialize the helper and use a
> different one when initializing SimpleQuartz instances.
>
> Thanks,
> Hiranya
>
> On Fri, Sep 11, 2009 at 4:29 PM, Hiranya Jayathilaka <hi...@gmail.com>
> wrote:
>>
>> Hi Devs,
>>
>> I ran into some buggy looking code related to tasks. When a new task is
>> created the SimpleQuartz#init method is called. There we get a task
>> scheduler instance using the following piece of code.
>>
>> TaskScheduler taskScheduler = TaskSchedulerFactory.getTaskScheduler(
>>
>> SynapseConstants.SYNAPSE_STARTUP_TASK_SCHEDULER);
>>
>> Then when a task is stopped/removed SimpleQuartz#destroy method is called.
>> There we try to get the task scheduler using the following line of code.
>>
>> TaskScheduler taskScheduler = taskHelper.getTaskScheduler();
>>
>> The task schedulers returned at the two occasions are in fact different
>> (confirmed by debugging). Therefore when a task is removed from the system
>> at runtime, things are not cleaned up properly and the task will continue to
>> run in the background. Also the task scheduler instance set to the task
>> helper is never initialized. That is another problem I encountered.
>>
>> I feel that these are actually bugs. Can somebody who's more familiar with
>> the Synapse tasks module shed some light on the subject? If somebody can
>> confirm I can start working on fixing them.
>>
>> Thanks
>> --
>> Hiranya Jayathilaka
>> Software Engineer;
>> WSO2 Inc.;  http://wso2.org
>> E-mail: hiranya@wso2.com;  Mobile: +94 77 633 3491
>> Blog: http://techfeast-hiranya.blogspot.com
>
>
>
> --
> Hiranya Jayathilaka
> Software Engineer;
> WSO2 Inc.;  http://wso2.org
> E-mail: hiranya@wso2.com;  Mobile: +94 77 633 3491
> Blog: http://techfeast-hiranya.blogspot.com
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@synapse.apache.org
For additional commands, e-mail: dev-help@synapse.apache.org


Re: Buggy Code in Tasks Module?

Posted by Hiranya Jayathilaka <hi...@gmail.com>.
FYI this is how we initialize the TaskHelper.

taskHelper.init(

TaskDescriptionRepositoryFactory.getTaskDescriptionRepository(
                                TaskConstants.TASK_DESCRIPTION_REPOSITORY),

TaskSchedulerFactory.getTaskScheduler(TaskConstants.TASK_SCHEDULER));

Note that we use one task scheduler to initialize the helper and use a
different one when initializing SimpleQuartz instances.

Thanks,
Hiranya

On Fri, Sep 11, 2009 at 4:29 PM, Hiranya Jayathilaka
<hi...@gmail.com>wrote:

> Hi Devs,
>
> I ran into some buggy looking code related to tasks. When a new task is
> created the SimpleQuartz#init method is called. There we get a task
> scheduler instance using the following piece of code.
>
> TaskScheduler taskScheduler = TaskSchedulerFactory.getTaskScheduler(
>
> SynapseConstants.SYNAPSE_STARTUP_TASK_SCHEDULER);
>
> Then when a task is stopped/removed SimpleQuartz#destroy method is called.
> There we try to get the task scheduler using the following line of code.
>
> TaskScheduler taskScheduler = taskHelper.getTaskScheduler();
>
> The task schedulers returned at the two occasions are in fact different
> (confirmed by debugging). Therefore when a task is removed from the system
> at runtime, things are not cleaned up properly and the task will continue to
> run in the background. Also the task scheduler instance set to the task
> helper is never initialized. That is another problem I encountered.
>
> I feel that these are actually bugs. Can somebody who's more familiar with
> the Synapse tasks module shed some light on the subject? If somebody can
> confirm I can start working on fixing them.
>
> Thanks
> --
> Hiranya Jayathilaka
> Software Engineer;
> WSO2 Inc.;  http://wso2.org
> E-mail: hiranya@wso2.com;  Mobile: +94 77 633 3491
> Blog: http://techfeast-hiranya.blogspot.com
>



-- 
Hiranya Jayathilaka
Software Engineer;
WSO2 Inc.;  http://wso2.org
E-mail: hiranya@wso2.com;  Mobile: +94 77 633 3491
Blog: http://techfeast-hiranya.blogspot.com