You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2015/04/07 13:48:24 UTC

svn commit: r1671818 - in /sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs: JobHandler.java JobManagerImpl.java queues/JobQueueImpl.java

Author: cziegeler
Date: Tue Apr  7 11:48:23 2015
New Revision: 1671818

URL: http://svn.apache.org/r1671818
Log:
SLING-4581 : Job notifications should only be sent out after the job resource has been updated 

Modified:
    sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobHandler.java
    sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java
    sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/queues/JobQueueImpl.java

Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobHandler.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobHandler.java?rev=1671818&r1=1671817&r2=1671818&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobHandler.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobHandler.java Tue Apr  7 11:48:23 2015
@@ -113,7 +113,7 @@ public class JobHandler {
      */
     public void finished(final Job.JobState state,
                           final boolean keepJobInHistory,
-                          final long duration) {
+                          final Long duration) {
         final boolean isSuccess = (state == Job.JobState.SUCCEEDED);
         final ResourceResolver resolver = this.configuration.createResourceResolver();
         try {

Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java?rev=1671818&r1=1671817&r2=1671818&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java Tue Apr  7 11:48:23 2015
@@ -348,7 +348,7 @@ public class JobManagerImpl
                     }
                 } else {
                     final JobHandler jh = new JobHandler(job, null, this.configuration);
-                    jh.finished(Job.JobState.DROPPED, true, -1);
+                    jh.finished(Job.JobState.DROPPED, true, null);
                 }
             }
         } else {
@@ -864,7 +864,7 @@ public class JobManagerImpl
             if ( forward && !stopped ) {
                 // mark the job as stopped
                 final JobHandler jh = new JobHandler(job, null, this.configuration);
-                jh.finished(JobState.STOPPED, true, -1);
+                jh.finished(JobState.STOPPED, true, null);
             }
         }
     }

Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/queues/JobQueueImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/queues/JobQueueImpl.java?rev=1671818&r1=1671817&r2=1671818&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/queues/JobQueueImpl.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/queues/JobQueueImpl.java Tue Apr  7 11:48:23 2015
@@ -503,8 +503,10 @@ public class JobQueueImpl
 
     private static final class RescheduleInfo {
         public boolean      reschedule = false;
+        // processing time is only set of state is SUCCEEDED
         public long         processingTime;
         public Job.JobState state;
+        public String       notificationTopic;
     }
 
     private RescheduleInfo handleReschedule(final JobHandler handler, final Job.JobState resultState) {
@@ -516,7 +518,7 @@ public class JobQueueImpl
                     this.logger.debug("Finished job {}", Utility.toString(handler.getJob()));
                 }
                 info.processingTime = System.currentTimeMillis() - handler.started;
-                NotificationUtility.sendNotification(this.services.eventAdmin, NotificationConstants.TOPIC_JOB_FINISHED, handler.getJob(), info.processingTime);
+                info.notificationTopic = NotificationConstants.TOPIC_JOB_FINISHED;
                 break;
             case QUEUED : // check if we exceeded the number of retries
                 final int retries = (Integer) handler.getJob().getProperty(Job.PROPERTY_JOB_RETRIES);
@@ -527,21 +529,21 @@ public class JobQueueImpl
                     if ( this.logger.isDebugEnabled() ) {
                         this.logger.debug("Cancelled job {}", Utility.toString(handler.getJob()));
                     }
-                    NotificationUtility.sendNotification(this.services.eventAdmin, NotificationConstants.TOPIC_JOB_CANCELLED, handler.getJob(), null);
+                    info.notificationTopic = NotificationConstants.TOPIC_JOB_CANCELLED;
                 } else {
                     info.reschedule = true;
                     handler.getJob().retry();
                     if ( this.logger.isDebugEnabled() ) {
                         this.logger.debug("Failed job {}", Utility.toString(handler.getJob()));
                     }
-                    NotificationUtility.sendNotification(this.services.eventAdmin, NotificationConstants.TOPIC_JOB_FAILED, handler.getJob(), null);
+                    info.notificationTopic = NotificationConstants.TOPIC_JOB_FAILED;
                 }
                 break;
             default : // consumer cancelled the job (STOPPED, GIVEN_UP, ERROR)
                 if ( this.logger.isDebugEnabled() ) {
                     this.logger.debug("Cancelled job {}", Utility.toString(handler.getJob()));
                 }
-                NotificationUtility.sendNotification(this.services.eventAdmin, NotificationConstants.TOPIC_JOB_CANCELLED, handler.getJob(), null);
+                info.notificationTopic = NotificationConstants.TOPIC_JOB_CANCELLED;
                 break;
         }
 
@@ -586,6 +588,7 @@ public class JobQueueImpl
         } else {
             this.reschedule(handler);
         }
+        NotificationUtility.sendNotification(this.services.eventAdmin, rescheduleInfo.notificationTopic, handler.getJob(), rescheduleInfo.processingTime);
 
         return rescheduleInfo.reschedule;
     }