Hi Anjana,

Understood. It has to be per TaskManager. I tried out the fix and it works
as expected. Thank you very much for the prompt response.

On Sat, Feb 28, 2015 at 2:52 PM, Anjana Fernando <[email protected]> wrote:

> Hi Shafreen,
>
> Yeah, that's a bug! .. good catch. The issue is, as you said, we just
> having a singe TriggerListener for all the tenants/task-types, where we
> should actually be having a single TriggerListener for one TaskManager (per
> tenant/task-type). So the correct fix is registering a matcher in the
> current code, in the constructor to give the matcher. I've fixed this in
> GitHub now, with this commit [1]. Please check and verify.
>
> [1]
> https://github.com/wso2/carbon-commons/commit/5df4e830bb7d93d0a85085a5ff21e98d65b88283
>
> Cheers,
> Anjana.
>
> On Sat, Feb 28, 2015 at 4:21 PM, Shafreen Anfar <[email protected]> wrote:
>
>> Hi Anjana,
>>
>> This [1] happens when we schedule tasks with different tenants. When I
>> dug deep I saw that tasks try to update its state to FINISH state using
>> TriggerListeners. I believe this is where the problem is. It seems the last
>> registered listener is getting notified for all the tasks. I think it is
>> because we are not using a matcher, the registered listener receives events
>> for all the triggers [2].
>>
>> Therefore, I changed the code as in the attached diff and I could not
>> observe the issue any more. When I debugged I could see that all the task's
>> states are getting updated properly. Can you please help us on this matter ?
>>
>> [1]
>>
>> org.wso2.carbon.ntask.common.TaskException: The task 'super_tenent' does
>> not exist
>> at
>> org.wso2.carbon.ntask.core.impl.RegistryBasedTaskRepository.getTaskMetadataPropResource(RegistryBasedTaskRepository.java:310)
>> at
>> org.wso2.carbon.ntask.core.impl.RegistryBasedTaskRepository.setTaskMetadataProp(RegistryBasedTaskRepository.java:323)
>> at org.wso2.carbon.ntask.core.TaskUtils.setTaskState(TaskUtils.java:109)
>> at
>> org.wso2.carbon.ntask.core.TaskUtils.setTaskFinished(TaskUtils.java:146)
>> at
>> org.wso2.carbon.ntask.core.impl.AbstractQuartzTaskManager$TaskTriggerListener.triggerComplete(AbstractQuartzTaskManager.java:424)
>> at
>> org.quartz.core.QuartzScheduler.notifyTriggerListenersComplete(QuartzScheduler.java:1876)
>> at
>> org.quartz.core.JobRunShell.notifyTriggerListenersComplete(JobRunShell.java:377)
>> at org.quartz.core.JobRunShell.run(JobRunShell.java:254)
>> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>> at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>> at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>> at java.lang.Thread.run(Thread.java:745)
>> Caused by:
>> *org.wso2.carbon.registry.core.exceptions.ResourceNotFoundException*:
>> Resource does not exist at path
>> /_system/governance/repository/components/org.wso2.carbon.tasks/definitions/1/ESB_TASK/super_tenent
>> at
>> org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.get(EmbeddedRegistry.java:532)
>> at
>> org.wso2.carbon.registry.core.caching.CacheBackedRegistry.getGhostResourceFromCache(CacheBackedRegistry.java:194)
>> at
>> org.wso2.carbon.registry.core.caching.CacheBackedRegistry.get(CacheBackedRegistry.java:167)
>> at
>> org.wso2.carbon.registry.core.session.UserRegistry.getInternal(UserRegistry.java:613)
>> at
>> org.wso2.carbon.registry.core.session.UserRegistry.access$400(UserRegistry.java:60)
>> at
>> org.wso2.carbon.registry.core.session.UserRegistry$5.run(UserRegistry.java:596)
>> at
>> org.wso2.carbon.registry.core.session.UserRegistry$5.run(UserRegistry.java:593)
>> at java.security.AccessController.doPrivileged(Native Method)
>> at
>> org.wso2.carbon.registry.core.session.UserRegistry.get(UserRegistry.java:593)
>> at
>> org.wso2.carbon.ntask.core.impl.RegistryBasedTaskRepository.getTaskMetadataPropResource(RegistryBasedTaskRepository.java:306)
>> ... 12 more
>>
>> [2]
>> http://quartz-scheduler.org/api/2.2.0/org/quartz/ListenerManager.html#addTriggerListener(org.quartz.TriggerListener)
>>
>> --
>> Regards,
>> *Shafreen*
>> Software Engineer
>> WSO2 Inc
>> Mobile : 077-556-395-1
>>
>
>
>
> --
> *Anjana Fernando*
> Senior Technical Lead
> WSO2 Inc. | http://wso2.com
> lean . enterprise . middleware
>



-- 
Regards,
*Shafreen*
Software Engineer
WSO2 Inc
Mobile : 077-556-395-1
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to