[
https://issues.apache.org/jira/browse/FELIX-5036?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15929192#comment-15929192
]
David Jencks commented on FELIX-5036:
-------------------------------------
I was never able to reproduce the issue, I'd be fine with closing the issue
until someone can provide more information about how to make the problem happen.
> [DS] bundle start order problem with config admin
> -------------------------------------------------
>
> Key: FELIX-5036
> URL: https://issues.apache.org/jira/browse/FELIX-5036
> Project: Felix
> Issue Type: Bug
> Components: Declarative Services (SCR)
> Affects Versions: scr-2.0.0
> Reporter: David Jencks
>
> There was a discussion on the bndtools list about a problem with start order
> of DS and config admin. I'm pasting Peter's email where he describes how to
> reproduce the problem.
> think I nailed down the issue, my guess it is in Felix SCR and suggest you
> file an issue.
> The ordering problem is caused by:
> 1: a component C with configuration policy require (no dependency on
> config admin)
> 2: a component Z that sets an instance for bundle 1’s component
> (dependency on config admin)
> 3: config admin
> 4: scr
> Any other ordering works :-)
> About the code you submitted, some tips. Next time please try to bring it
> down to a smaller sample. If you have such a problem you invariably find the
> problem by removing code in chunks until you see a change in behavior. The
> nice thing is then that at the end it is obvious what is going on. It also
> helps in this phase to aggressively refactor the code so you use 1 character
> names that are easier to separate then very similar (or in your case
> identical messages/names).
> Included are the bundles that fail, you might want to add them to the Felix
> SCR issue. They include their source code.
> Kind regards,
> Peter Kriens
> c bundle:
> =========
> package csample;
> package csample;
> import java.io.IOException;
> import java.util.Map;
> import org.osgi.framework.InvalidSyntaxException;
> import aQute.bnd.annotation.component.Activate;
> import aQute.bnd.annotation.component.Component;
> import aQute.bnd.annotation.component.ConfigurationPolicy;
> @Component(
> name = "sample.cm.require",
> configurationPolicy = ConfigurationPolicy.require,
> immediate = true)
> public class C {
> @Activate
> public void startup(Map<String, Object> props) throws
> InvalidSyntaxException, IOException {
> String name = (String) props.get("sample.cm.require.name");
> System.out.println("C : startup -> " + name);
> }
> }
> z bundle:
> =========
> package zsample;
> import java.io.IOException;
> import java.util.Dictionary;
> import java.util.Hashtable;
> import org.osgi.framework.InvalidSyntaxException;
> import org.osgi.service.cm.Configuration;
> import org.osgi.service.cm.ConfigurationAdmin;
> import org.osgi.service.component.ComponentContext;
> import aQute.bnd.annotation.component.Activate;
> import aQute.bnd.annotation.component.Component;
> import aQute.bnd.annotation.component.Deactivate;
> import aQute.bnd.annotation.component.Reference;
> @Component(immediate = true)
> public class Z {
> private ConfigurationAdmin configAdmin;
> @Activate
> public void startup(ComponentContext ctx) throws
> InvalidSyntaxException, IOException {
> System.out.println("Z Startup");
> Dictionary<String, Object> props = new Hashtable<>();
> String pid = "sample.cm.require";
> Configuration config =
> configAdmin.createFactoryConfiguration(pid, null);
> props.put("sample.cm.require.name", "from Z");
> config.update(props);
> }
> @Deactivate
> public void shutdown(ComponentContext ctx) {
> System.out.println("Z Shutdown");
> }
> @Reference
> public void setConfigAdmin(ConfigurationAdmin configAdmin) {
> this.configAdmin = configAdmin;
> System.out.println("Z setConfigAdmin");
> }
> }
> bndrun file:
> -runbundles: \
> c;version=latest,\
> z;version=latest,\
> org.apache.felix.configadmin,\
> org.apache.felix.scr
> -runfw: org.apache.felix.framework;version='[4.4.1,4.4.1]'
> -runee: JavaSE-1.8
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)