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 ) {