You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@karaf.apache.org by "Guillaume Nodet (JIRA)" <ji...@apache.org> on 2016/08/01 13:53:20 UTC
[jira] [Commented] (KARAF-4411) FeatureResolver: spring-dm-web
feature installs Spring ver 3.1.4 and 3.2.14 at the same time
[ https://issues.apache.org/jira/browse/KARAF-4411?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15402061#comment-15402061 ]
Guillaume Nodet commented on KARAF-4411:
----------------------------------------
Unfortunately, the resolver can not guarantee that it will return the "best" solution.
So a small change in the input can result in somewhat different solution.
{code}
karaf@root()> requirement-add --simulate --verbose "spring/4.2"
Changes to perform:
Region: root
Bundles to install:
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aop/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-beans/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context-support/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-core/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-expression/4.2.5.RELEASE_1
mvn:org.springframework/spring-aop/3.1.4.RELEASE
mvn:org.springframework/spring-asm/3.1.4.RELEASE
mvn:org.springframework/spring-beans/3.1.4.RELEASE
mvn:org.springframework/spring-context/3.1.4.RELEASE
mvn:org.springframework/spring-context-support/3.1.4.RELEASE
mvn:org.springframework/spring-core/3.1.4.RELEASE
mvn:org.springframework/spring-expression/3.1.4.RELEASE
Bundles to refresh:
org.apache.activemq.activemq-osgi/5.13.2 (Should be wired to: org.apache.servicemix.bundles.spring-context/4.2.5.RELEASE_1 (through [org.apache.activemq.activemq-osgi/5.13.2] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.springframework.context)(version>=3.0.0)(!(version>=5.0.0)))"; resolution:=optional), org.apache.servicemix.bundles.spring-beans/4.2.5.RELEASE_1 (through [org.apache.activemq.activemq-osgi/5.13.2] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.springframework.beans)(version>=3.0.0)(!(version>=5.0.0)))"; resolution:=optional), org.apache.servicemix.bundles.spring-core/4.2.5.RELEASE_1 (through [org.apache.activemq.activemq-osgi/5.13.2] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.springframework.core.io)(version>=3.0.0)(!(version>=5.0.0)))"; resolution:=optional))
org.apache.xbean.spring/3.18.0 (Should be wired to: org.springframework.core/3.1.4.RELEASE (through [org.apache.xbean.spring/3.18.0] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.springframework.core.io)(version>=2.5.0)(!(version>=4.0.0)))"), org.springframework.beans/3.1.4.RELEASE (through [org.apache.xbean.spring/3.18.0] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.springframework.beans)(version>=2.5.0)(!(version>=4.0.0)))"), org.springframework.context/3.1.4.RELEASE (through [org.apache.xbean.spring/3.18.0] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.springframework.context)(version>=2.5.0)(!(version>=4.0.0)))"))
karaf@root()> requirement-add --simulate --verbose "spring/4"
Changes to perform:
Region: root
Bundles to install:
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aop/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-beans/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context-support/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-core/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-expression/4.2.5.RELEASE_1
karaf@root()>
{code}
This use case can be simplified a bit by blacklisting the spring 3.1 features by adding the following line into {{etc/blacklisted.properties}}:
{code}
spring;range="[3.0,3.2)"
{code}
But we still have a slightly unexpected output:
{code}
karaf@root()> requirement-add --simulate --verbose "spring/4.2"
Changes to perform:
Region: root
Bundles to install:
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aop/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-beans/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context-support/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-core/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-expression/4.2.5.RELEASE_1
Bundles to refresh:
org.apache.activemq.activemq-osgi/5.13.2 (Should be wired to: org.apache.servicemix.bundles.spring-core/4.2.5.RELEASE_1 (through [org.apache.activemq.activemq-osgi/5.13.2] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.springframework.core.io)(version>=3.0.0)(!(version>=5.0.0)))"; resolution:=optional), org.apache.servicemix.bundles.spring-context/4.2.5.RELEASE_1 (through [org.apache.activemq.activemq-osgi/5.13.2] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.springframework.context)(version>=3.0.0)(!(version>=5.0.0)))"; resolution:=optional), org.apache.servicemix.bundles.spring-beans/4.2.5.RELEASE_1 (through [org.apache.activemq.activemq-osgi/5.13.2] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.springframework.beans)(version>=3.0.0)(!(version>=5.0.0)))"; resolution:=optional))
karaf@root()> requirement-add --simulate --verbose "spring/4"
Changes to perform:
Region: root
Bundles to install:
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aop/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-beans/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context-support/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-core/4.2.5.RELEASE_1
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-expression/4.2.5.RELEASE_1
karaf@root()>
{code}
In the above scenario, the difference is that activemq is wired to either spring 3.2 or spring 4.2.
I also just spotted a possible source of this problem with activemq.
I see the following import:
{code}
org.springframework.osgi.context.support;resolution:=optional;version="[3,5)",
{code}
which is wrong, because this package comes from spring-dm, so exported in version 1.2.1, not 3.x or 4.x.
This means that this import will never be satisfied.
> FeatureResolver: spring-dm-web feature installs Spring ver 3.1.4 and 3.2.14 at the same time
> --------------------------------------------------------------------------------------------
>
> Key: KARAF-4411
> URL: https://issues.apache.org/jira/browse/KARAF-4411
> Project: Karaf
> Issue Type: Bug
> Components: karaf-feature
> Affects Versions: 4.0.4
> Environment: Oracle JDK 1.8
> Reporter: Vladimir Konkov
> Assignee: Guillaume Nodet
> Fix For: 4.1.0, 4.0.6
>
>
> Similar to KARAF-4159.
> To reproduce:
> $ feature:install spring-dm-web
> $ la
> ...
> 56 | Active | 30 | 3.2.14.RELEASE_1 | Apache ServiceMix :: Bundles :: spring-aop
> 57 | Active | 30 | 3.2.14.RELEASE_1 | Apache ServiceMix :: Bundles :: spring-beans
> 58 | Active | 30 | 3.2.14.RELEASE_1 | Apache ServiceMix :: Bundles :: spring-context
> 59 | Active | 30 | 3.2.14.RELEASE_1 | Apache ServiceMix :: Bundles :: spring-context-support
> 60 | Active | 30 | 3.2.14.RELEASE_1 | Apache ServiceMix :: Bundles :: spring-core
> 61 | Active | 30 | 3.2.14.RELEASE_1 | Apache ServiceMix :: Bundles :: spring-expression
> ...
> 106 | Active | 30 | 3.1.4.RELEASE | Spring AOP
> 107 | Active | 30 | 3.1.4.RELEASE | Spring ASM
> 108 | Active | 30 | 3.1.4.RELEASE | Spring Beans
> 109 | Active | 30 | 3.1.4.RELEASE | Spring Context
> 110 | Active | 30 | 3.1.4.RELEASE | Spring Context Support
> 111 | Active | 30 | 3.1.4.RELEASE | Spring Core
> 112 | Active | 30 | 3.1.4.RELEASE | Spring Expression Language
> 113 | Active | 30 | 1.2.1 | spring-osgi-web
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)