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 2013/10/10 10:55:51 UTC

svn commit: r1530882 - /sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/timed/TimedEventSender.java

Author: cziegeler
Date: Thu Oct 10 08:55:51 2013
New Revision: 1530882

URL: http://svn.apache.org/r1530882
Log:
SLING-3139 : Provide a way to schedule jobs

Modified:
    sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/timed/TimedEventSender.java

Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/timed/TimedEventSender.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/timed/TimedEventSender.java?rev=1530882&r1=1530881&r2=1530882&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/timed/TimedEventSender.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/timed/TimedEventSender.java Thu Oct 10 08:55:51 2013
@@ -33,6 +33,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
@@ -123,6 +124,8 @@ public class TimedEventSender
     /** Unloaded events. */
     private Set<String>unloadedEvents = new HashSet<String>();
 
+    private final AtomicBoolean threadStarted = new AtomicBoolean(false);
+
     /**
      * Activate this component.
      */
@@ -164,11 +167,13 @@ public class TimedEventSender
             @Override
             public void run() {
                 loadEvents(now);
-                try {
-                    runInBackground();
-                } catch (final Throwable t) { //NOSONAR
-                    logger.error("Background thread stopped with exception: " + t.getMessage(), t);
-                    running = false;
+                if ( threadStarted.compareAndSet(false, true) ) {
+                    try {
+                        runInBackground();
+                    } catch (final Throwable t) { //NOSONAR
+                        logger.error("Background thread stopped with exception: " + t.getMessage(), t);
+                        running = false;
+                    }
                 }
             }
         });