[ 
https://issues.apache.org/jira/browse/SLING-5666?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15290990#comment-15290990
 ] 

Damien Obrist commented on SLING-5666:
--------------------------------------

[~cziegeler] Thanks! The fix works and looks good to me from what I can see. 
One thing I wonder about though is that {{ScheduledJobHandler#remove}} contains 
the following 
[code|https://github.com/apache/sling/blob/caba56abb49cb173cf6c9903a0facb2b6d31e56c/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/scheduling/ScheduledJobHandler.java#L480-L485]:

{code}
synchronized ( this.scheduledJobs ) {
    final Holder h = scheduledJobs.remove(scheduleKey);
    if ( h != null && h.info != null ) {
        jobScheduler.unscheduleJob(h.info);
    }
}
{code}

This code should in theory already call {{JobSchedulerImpl#unscheduleJob}}, 
which you now call explicitly in your [updated 
fix|https://fisheye6.atlassian.com/changelog/sling?cs=1744360]. Except that 
this doesn't seem to happen, because the map 
{{ScheduledJobHandler.scheduledJobs}} doesn't contain the job yet - it is added 
there only asynchronously in {{ScheduledJobHandler#handleAddUpdate}}. Is that 
maybe something that should change? I don't grasp the complete code, so I can't 
really tell.

> Unscheduling a job should remove corresponding node
> ---------------------------------------------------
>
>                 Key: SLING-5666
>                 URL: https://issues.apache.org/jira/browse/SLING-5666
>             Project: Sling
>          Issue Type: Bug
>          Components: Extensions
>    Affects Versions: Event 4.0.0, Event 4.0.2
>            Reporter: Damien Obrist
>            Assignee: Carsten Ziegeler
>             Fix For: Event 4.1.0
>
>
> Unscheduling a previously scheduled job does not remove the corresponding 
> node below {{/var/eventing/scheduled-jobs}}:
> {code:java}
> ScheduledJobInfo info =  
> jobManager.createJob(topic).schedule().at(date).add();
> // creates /var/eventing/scheduled-jobs/c204a1ad-b161-4e76-9dfe-4152bca088cf
> info.unschedule();
> // /var/eventing/scheduled-jobs/c204a1ad-b161-4e76-9dfe-4152bca088cf persists
> {code}
> This can lead to the situation where 
> [ScheduledJobHandler#scan|https://github.com/apache/sling/blob/caba56abb49cb173cf6c9903a0facb2b6d31e56c/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/scheduling/ScheduledJobHandler.java#L142-L174]
>  picks the node back up again and reschedules the job.
> This is a regression introduced by SLING-4680. Before the changes of 
> SLING-4680, {{JobSchedulerImpl#unschedule}} took care of [removing the 
> node|https://github.com/apache/sling/blob/6eaa6a131b4013c5b4990ee126f6af1c5710d5de/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobSchedulerImpl.java#L335-L353].
>  Currently, this is [not being done 
> anymore|https://github.com/apache/sling/blob/caba56abb49cb173cf6c9903a0facb2b6d31e56c/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/scheduling/JobSchedulerImpl.java#L196-L202].



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to