You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2017/09/06 07:47:47 UTC

svn commit: r1807445 - /felix/trunk/osgi-r7/configurator/src/main/java/org/apache/felix/configurator/impl/Configurator.java

Author: cziegeler
Date: Wed Sep  6 07:47:47 2017
New Revision: 1807445

URL: http://svn.apache.org/viewvc?rev=1807445&view=rev
Log:
Check state of bundles on startup

Modified:
    felix/trunk/osgi-r7/configurator/src/main/java/org/apache/felix/configurator/impl/Configurator.java

Modified: felix/trunk/osgi-r7/configurator/src/main/java/org/apache/felix/configurator/impl/Configurator.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/configurator/src/main/java/org/apache/felix/configurator/impl/Configurator.java?rev=1807445&r1=1807444&r2=1807445&view=diff
==============================================================================
--- felix/trunk/osgi-r7/configurator/src/main/java/org/apache/felix/configurator/impl/Configurator.java (original)
+++ felix/trunk/osgi-r7/configurator/src/main/java/org/apache/felix/configurator/impl/Configurator.java Wed Sep  6 07:47:47 2017
@@ -281,7 +281,10 @@ public class Configurator {
         final Set<Long> ids = new HashSet<>();
         for(final Bundle b : bundles) {
             ids.add(b.getBundleId());
-            processAddBundle(b);
+            final int state = b.getState();
+            if ( state == Bundle.ACTIVE || state == Bundle.STARTING ) {
+                processAddBundle(b);
+            }
         }
         for(final long id : state.getKnownBundleIds()) {
             if ( !ids.contains(id) ) {
@@ -529,7 +532,9 @@ public class Configurator {
         Long configAdminServiceBundleId = this.state.getConfigAdminBundleId(cfg.getBundleId());
         if ( configAdminServiceBundleId == null ) {
             final Bundle configBundle = cfg.getBundleId() == -1 ? this.bundleContext.getBundle() : this.bundleContext.getBundle(Constants.SYSTEM_BUNDLE_LOCATION).getBundleContext().getBundle(cfg.getBundleId());
-            if ( configBundle != null && configBundle.getState() == Bundle.ACTIVE ) {
+            // we check the state again, just to be sure (to avoid race conditions)
+            if ( configBundle != null
+                 && (configBundle.getState() == Bundle.STARTING || configBundle.getState() == Bundle.ACTIVE)) {
                 if ( System.getSecurityManager() == null
                      || configBundle.hasPermission( new ServicePermission(ConfigurationAdmin.class.getName(), ServicePermission.GET)) ) {
                     try {
@@ -555,10 +560,6 @@ public class Configurator {
                         // this can never happen as we pass {@code null} as the filter
                     }
                 }
-            } else {
-                if ( configBundle != null ) {
-                    SystemLogger.error("Bundle " + getBundleIdentity(configBundle) + " has state " + getBundleState(configBundle.getState()) + " for configuration from bundle " + cfg.getBundleId());
-                }
             }
         }
         if ( configAdminServiceBundleId == null ) {