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;
+ }
}
}
});