You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "James Hanson (JIRA)" <ji...@apache.org> on 2009/06/05 18:56:07 UTC

[jira] Commented: (FELIX-1165) When restarting a bundle, the config admin reports "Configuration ... has already been delivered", and the bundle receives no configuration.

    [ https://issues.apache.org/jira/browse/FELIX-1165?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12716668#action_12716668 ] 

James Hanson commented on FELIX-1165:
-------------------------------------

When the configurator bundle sends the new configuration via Configuration.update(props), the update is processed by ConfigurationManager$UpdateConfiguration.run().  This method doesn't set the ConfigurationImpl.serviceReference.  When the configured bundle is stopped, the ConfigurationManager$AbstractManagedServiceTracker.removedService() method will not call ConfigurationImpl.setDelivered(false), because it first checks that the serviceReference being removed equals the ConfigurationImpl.serviceReference (which is null).

If the configuration is found by the PersistenceManager, the ConfigurationImpl.serviceReference is set in ConfigurationManager$ManagedServiceUpdate.run().

Suggested solution - set the ConfigurationImpl.serviceReference in ConfigurationManager$UpdateConfiguration.run().

> When restarting a bundle, the config admin reports "Configuration ... has already been delivered", and the bundle receives no configuration.
> --------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: FELIX-1165
>                 URL: https://issues.apache.org/jira/browse/FELIX-1165
>             Project: Felix
>          Issue Type: Bug
>          Components: Configuration Admin
>    Affects Versions: configadmin-1.0.1, configadmin-1.0.4, configadmin-1.0.8, configadmin-1.0.10
>         Environment: Windows XP, JDK 1.6.0_10, Felix 1.8.0, configadmin 1.0.10
>            Reporter: James Hanson
>            Priority: Minor
>         Attachments: sample.zip
>
>
> When restarting a bundle, the configuration admin reports "Configuration ... has already been delivered", and the bundle receives no configuration.
> As far as I can tell this only occurs if a bundle is installed and started by the felix.auto.start.1 property in the config.properties.  If Felix is restarted and the bundle is loaded from the cache, the problem disappears.
> Test setup:
> Create a "configurable" bundle, implement ManagedService and register as a ManagedService with a PID from the BundleActivator start() method.
> Create a "configurator" bundle and send a configuration to the PID.
> Extract Felix and add the Felix config admin bundle to the felix.auto.start.1 property in conf/config.properties
> Add the two new bundles to the felix.auto.start.1 property.
> Start Felix.
> Stop the "configurable" bundle, and start it again.
> * If the configuration is sent from the "configurator", the bundle receives it.
> * If felix is restarted, the problem disappears unless the felix-cache is deleted.
> This can be reproduced with felix 1.8.0 using the example at:
> http://www.dynamicjava.org/articles/osgi-compendium/configuration-admin-service
> See also bug FELIX-516.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.