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/29 15:46:53 UTC
svn commit: r1676744 - in
/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/config:
JobManagerConfiguration.java QueueConfigurationManager.java
TopologyCapabilities.java
Author: cziegeler
Date: Wed Apr 29 13:45:29 2015
New Revision: 1676744
URL: http://svn.apache.org/r1676744
Log:
SLING-4678 : Background tasks not stopping when bundle is stopped
Modified:
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/config/JobManagerConfiguration.java
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/config/QueueConfigurationManager.java
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/config/TopologyCapabilities.java
Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/config/JobManagerConfiguration.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/config/JobManagerConfiguration.java?rev=1676744&r1=1676743&r2=1676744&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/config/JobManagerConfiguration.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/config/JobManagerConfiguration.java Wed Apr 29 13:45:29 2015
@@ -24,6 +24,7 @@ import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
import org.apache.felix.scr.annotations.Activate;
@@ -80,7 +81,7 @@ import org.slf4j.LoggerFactory;
@Property(name=JobManagerConfiguration.PROPERTY_BACKGROUND_LOAD_DELAY,
longValue=JobManagerConfiguration.DEFAULT_BACKGROUND_LOAD_DELAY, propertyPrivate=true),
})
-public class JobManagerConfiguration implements TopologyEventListener, ConfigurationChangeListener {
+public class JobManagerConfiguration implements TopologyEventListener {
/** Logger. */
private final Logger logger = LoggerFactory.getLogger("org.apache.sling.event.impl.jobs");
@@ -176,6 +177,9 @@ public class JobManagerConfiguration imp
@Reference
private Scheduler scheduler;
+ /** Is this still active? */
+ private final AtomicBoolean active = new AtomicBoolean(false);
+
/** The topology capabilities. */
private volatile TopologyCapabilities topologyCapabilities;
@@ -221,6 +225,7 @@ public class JobManagerConfiguration imp
} finally {
resolver.close();
}
+ this.active.set(true);
this.queueConfigManager.addListener(this);
}
@@ -239,10 +244,15 @@ public class JobManagerConfiguration imp
*/
@Deactivate
protected void deactivate() {
- this.stopProcessing(true);
+ this.active.set(false);
+ this.stopProcessing();
this.queueConfigManager.removeListener();
}
+ public boolean isActive() {
+ return this.active.get();
+ }
+
/**
* Create a new resource resolver for reading and writing the resource tree.
* The resolver needs to be closed by the client.
@@ -441,15 +451,10 @@ public class JobManagerConfiguration imp
* This method is invoked by the queue configuration manager
* whenever the queue configuration changes.
*/
- @Override
- public void configurationChanged(final boolean active) {
+ public void queueConfigurationChanged() {
final TopologyCapabilities caps = this.topologyCapabilities;
- if ( caps != null ) {
- this.stopProcessing(false);
-
- if ( active ) {
- this.startProcessing(Type.PROPERTIES_CHANGED, caps, true);
- }
+ if ( caps != null && this.isActive() ) {
+ this.startProcessing(Type.PROPERTIES_CHANGED, caps, true);
}
}
@@ -457,16 +462,15 @@ public class JobManagerConfiguration imp
* Stop processing
* @param deactivate Whether to deactivate the capabilities
*/
- private void stopProcessing(final boolean deactivate) {
+ private void stopProcessing() {
logger.debug("Stopping job processing...");
- boolean notify = this.topologyCapabilities != null;
- // deactivate old capabilities - this stops all background processes
- if ( deactivate && this.topologyCapabilities != null ) {
- this.topologyCapabilities.deactivate();
- }
- this.topologyCapabilities = null;
+ final TopologyCapabilities caps = this.topologyCapabilities;
+
+ if ( caps != null ) {
+ // deactivate old capabilities - this stops all background processes
+ caps.deactivate();
+ this.topologyCapabilities = null;
- if ( notify ) {
// stop all listeners
this.notifiyListeners();
}
@@ -545,13 +549,13 @@ public class JobManagerConfiguration imp
synchronized ( this.listeners ) {
if ( event.getType() == Type.TOPOLOGY_CHANGING ) {
- this.stopProcessing(true);
+ this.stopProcessing();
} else if ( event.getType() == Type.TOPOLOGY_INIT
|| event.getType() == Type.TOPOLOGY_CHANGED
|| event.getType() == Type.PROPERTIES_CHANGED ) {
- this.stopProcessing(true);
+ this.stopProcessing();
this.startProcessing(event.getType(), new TopologyCapabilities(event.getNewView(), this), false);
}
Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/config/QueueConfigurationManager.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/config/QueueConfigurationManager.java?rev=1676744&r1=1676743&r2=1676744&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/config/QueueConfigurationManager.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/config/QueueConfigurationManager.java Wed Apr 29 13:45:29 2015
@@ -54,7 +54,7 @@ public class QueueConfigurationManager {
private MainQueueConfiguration mainQueueConfiguration;
/** Listener - this is the job manager configuration component. */
- private volatile ConfigurationChangeListener changeListener;
+ private volatile JobManagerConfiguration changeListener;
/**
* Add a new queue configuration.
@@ -175,7 +175,7 @@ public class QueueConfigurationManager {
* Add a config listener.
* @param listener
*/
- public void addListener(final ConfigurationChangeListener listener) {
+ public void addListener(final JobManagerConfiguration listener) {
this.changeListener = listener;
}
@@ -190,9 +190,9 @@ public class QueueConfigurationManager {
* Update the listener.
*/
private void updateListener() {
- final ConfigurationChangeListener l = this.changeListener;
+ final JobManagerConfiguration l = this.changeListener;
if ( l != null ) {
- l.configurationChanged(true);
+ l.queueConfigurationChanged();
}
}
}
Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/config/TopologyCapabilities.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/config/TopologyCapabilities.java?rev=1676744&r1=1676743&r2=1676744&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/config/TopologyCapabilities.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/config/TopologyCapabilities.java Wed Apr 29 13:45:29 2015
@@ -173,7 +173,7 @@ public class TopologyCapabilities {
* @return {@code true} if still active.
*/
public boolean isActive() {
- return this.active && this.view.isCurrent();
+ return this.active && this.jobManagerConfiguration.isActive() && this.view.isCurrent();
}
/**