You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Guillaume Nodet (JIRA)" <ji...@apache.org> on 2011/05/13 09:20:47 UTC

[jira] [Commented] (FELIX-2949) PackageAdmin#resolveBundles() should do a global resolution instead of a step by step resolution

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

Guillaume Nodet commented on FELIX-2949:
----------------------------------------

Here is the resolution exception:
{{code}}
org.osgi.framework.BundleException: Unable to resolve module org.apache.activemq.activemq-core [org.apache.felix.framework.resolver.WrappedModule@6b371a57] because it is exposed to package 'javax.annotation' from org.apache.geronimo.specs.geronimo-annotation_1.0_spec [57.0] and org.apache.felix.framework [0] via two dependency chains.

Chain 1:
  org.apache.activemq.activemq-core [org.apache.felix.framework.resolver.WrappedModule@6b371a57]
    import: (&(package=javax.annotation)(version>=1.0.0)(!(version>=2.0.0)))
     |
    export: package=javax.annotation
  org.apache.geronimo.specs.geronimo-annotation_1.0_spec [57.0]

Chain 2:
  org.apache.activemq.activemq-core [org.apache.felix.framework.resolver.WrappedModule@6b371a57]
    import: (&(package=org.apache.xbean.blueprint.context.impl)(version>=3.7.0)(!(version>=4.0.0)))
     |
    export: package=org.apache.xbean.blueprint.context.impl; uses:=javax.annotation
  org.apache.xbean.blueprint [58.0]
    import: (package=javax.annotation)
     |
    export: package=javax.annotation
  org.apache.felix.framework [0]
	at org.apache.felix.framework.Felix.resolveBundle(Felix.java:3442)[org.apache.felix.framework-3.0.9-fuse-00-10.jar:]
	at org.apache.felix.framework.Felix.startBundle(Felix.java:1728)[org.apache.felix.framework-3.0.9-fuse-00-10.jar:]
	at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:921)[org.apache.felix.framework-3.0.9-fuse-00-10.jar:]
	at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:908)[org.apache.felix.framework-3.0.9-fuse-00-10.jar:]
	at org.fusesource.fabric.agent.DeploymentAgent.updateDeployment(DeploymentAgent.java:437)[45:org.fusesource.fabric.fabric-agent:1.0.0.SNAPSHOT]
	at org.fusesource.fabric.agent.DeploymentAgent.doUpdate(DeploymentAgent.java:227)[45:org.fusesource.fabric.fabric-agent:1.0.0.SNAPSHOT]
	at org.fusesource.fabric.agent.DeploymentAgent$1.run(DeploymentAgent.java:150)[45:org.fusesource.fabric.fabric-agent:1.0.0.SNAPSHOT]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)[:1.6.0_24]
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)[:1.6.0_24]
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)[:1.6.0_24]
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_24]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_24]
	at java.lang.Thread.run(Thread.java:680)[:1.6.0_24]
{{code}}

The idea is that if the org.apache.activemq.activemq-core bundle is resolved before the org.apache.xbean.blueprint one, the resolution succeeds, but because the bundles are resolved in order, the process always fail because the org.apache.xbean.blueprint bundle is always wired against the incompatible package.

I'll try with 3.2.x version in a bit.

> PackageAdmin#resolveBundles() should do a global resolution instead of a step by step resolution
> ------------------------------------------------------------------------------------------------
>
>                 Key: FELIX-2949
>                 URL: https://issues.apache.org/jira/browse/FELIX-2949
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: framework-3.0.9, framework-3.2.1
>            Reporter: Guillaume Nodet
>
> The code currently iterates through the list of bundles and try to resolve them one by one.
> This unfortunately does not always give a good solution and have a global resolution would allow some use cases to be solved without manual intervention.
> My use case involve a package which is provided in 2 different versions and which causes use constraints to not be solved when the bundles are resolved one by one.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira