SLING-1970 : Potential deadlock during start of settings service
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1067955 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/sling/settings/impl/Activator.java b/src/main/java/org/apache/sling/settings/impl/Activator.java
index 5a7b299..a68b8d7 100644
--- a/src/main/java/org/apache/sling/settings/impl/Activator.java
+++ b/src/main/java/org/apache/sling/settings/impl/Activator.java
@@ -56,6 +56,7 @@
if ( this.settingsService.isDelayedStart() ) {
this.bundleContext.addBundleListener(this);
+ this.tryToStart();
} else {
this.startService();
}
@@ -66,13 +67,19 @@
*/
public void bundleChanged(BundleEvent event) {
if ( SlingSettingsServiceImpl.ENGINE_SYMBOLIC_NAME.equals(event.getBundle().getSymbolicName())) {
+ this.tryToStart();
+ }
+
+ }
+
+ private synchronized void tryToStart() {
+ if ( this.settingsService.isDelayedStart() ) {
this.settingsService.initDelayed(this.bundleContext);
if ( !this.settingsService.isDelayedStart() ) {
this.bundleContext.removeBundleListener(this);
this.startService();
}
}
-
}
private void startService() {