You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@karaf.apache.org by "Andrei Shakirin (JIRA)" <ji...@apache.org> on 2017/06/28 20:23:00 UTC

[jira] [Comment Edited] (KARAF-5199) Karaf installs both version of the feature (old and new) in case if referencing feature contains wrapped bundle with package import

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

Andrei Shakirin edited comment on KARAF-5199 at 6/28/17 8:22 PM:
-----------------------------------------------------------------

Hi Guillaume,

Thanks for looking into the issue.
Explicit bundle versioning works as well as explicit jollyday feature versioning:
{code}
    <feature name="basit-test-feature" version="${pom.version}">
        <feature version="${jollyday.version}">basit-thirdparty-jollyday</feature>
        <bundle>mvn:${project.groupId}/test-jolly/${project.version}</bundle>
    </feature>
{code}

Anyway it looks as workaround for me.
I agree that the wrapped bundle version is not recognizable, but the bunde belongs to the feature, that has concrete version.
Following questions:
1) Why the version resolution works correctly (even with wrapped bundle without version) if I try install basit-thirdparty-jollyday feature directly? In this case correct version of jollyday bundle will be installed
2) Why the version resolution works correctly (even with wrapped bundle without version) if I remove test-jolly bundle from basit-test-feature and install basit-test-feature?

The behavior ( that both versions or only single version of jollyday will be installed) depends on existence of bundle importing some jollyday packages in the feature. To be honest, this behavior looks a bit non-determenistic for me.
What do you think?


was (Author: ashakirin):
Hi Guillaume,

Thanks for looking into the issue.
Explicit bundle versioning works as well as explicit jollyday feature versioning:
{code}
    <feature name="basit-test-feature" version="${pom.version}">
        <feature version="${jollyday.version}">basit-thirdparty-jollyday</feature>
        <bundle>mvn:${project.groupId}/test-jolly/${project.version}</bundle>
    </feature>
{code}

Anyway it looks as workaround for me.
I agree that the wrapped bundle version is not recognizable, but the bunde belongs to the feature, that has concrete version.
Following questions:
1) Why the version resolution works correctly (even with wrapped bundle without version) if I try install basit-thirdparty-jollyday feature directly? In this case correct version of jollyday bundle will be installed
2) Why the version resolution works correctly (even with wrapped bundle without version) if I remove test-jolly bundle from basit-test-feature and install basit-test-feature?

The behavior ( that both versions or only single version of jollyday will be installed) depends on existence of bundle importing some jollyday packages in the feature. To be honest, this behavior looks a bit non-determenistic for me.
What do you think?
But as soon as feature contains

> Karaf installs both version of the feature (old and new) in case if referencing feature contains wrapped bundle with package import
> -----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: KARAF-5199
>                 URL: https://issues.apache.org/jira/browse/KARAF-5199
>             Project: Karaf
>          Issue Type: Bug
>          Components: karaf-feature
>    Affects Versions: 4.0.9
>            Reporter: Andrei Shakirin
>            Assignee: Guillaume Nodet
>         Attachments: org.apache.karaf.features.cfg, test-feature-project.zip
>
>
> Accordingly documentation, if feature is available in multiple versions, the newest version have to be installed:
> {code}
> The <feature/> element contains the name of a feature. A specific feature version can be defined using the version attribute to the <feature/> element (<feature version="1.0.0">feature1</feature>). If the version attribute is not specified, Apache Karaf will install the latest version available.
> {code}
> Unfortunatelly it is not always the case.
> Use case:
> 1) feature basit-thirdparty-jollyday references wrapped jar (jollyday library); this feature is available in two different versions (1.0.0-SNAPSHOT and 2.0.0-SNAPSHOT) and contains different versions of jolly (0.4.6 and 0.5.2 correspondingly);
> 2) bundle test-jolly uses packages from wrapped jar (jollyday library);
> 3) feature test-feature references basit-thirdparty-jollyday and test-jolly bundle.
> Karaf repositories list contains both versions of basit-thirdparty-jollyday and  test-feature:
> {code}
> karaf@root()> feature:list | grep basit
> basit-thirdparty-jollyday     | 2.0.0.SNAPSHOT   |          | Uninstalled | ccp
>                      |
> basit-thirdparty-jollyday     | 1.0.0.SNAPSHOT   |          | Uninstalled | ccp
>                      |
> basit-test-feature            | 1.0.0.SNAPSHOT   |          | Uninstalled | ccp
>                      |
> karaf@root()>{code}
> If I try to install basit-thirdparty-jollyday feature - it works as expected: only 2.0.0.SNAPSHOT will be installed:
> {code}
> karaf@root()> feature:install -t -v basit-thirdparty-jollyday
> Adding features: basit-thirdparty-jollyday/[2.0.0.SNAPSHOT,2.0.0.SNAPSHOT]
> Changes to perform:
>   Region: root
>     Bundles to install:
>       wrap:mvn:de.jollyday/jollyday/0.5.2
> {code}
> But if I try to install basit-test-feature, Karaf installs BOTH versions of basit-thirdparty-jollyday:
> {code}
> karaf@root()> feature:install -t -v basit-test-feature
> Adding features: basit-test-feature/[1.0.0.SNAPSHOT,1.0.0.SNAPSHOT]
> Changes to perform:
>   Region: root
>     Bundles to install:
>       mvn:de.conrad.ccp.basit/test-jolly/1.0.0-SNAPSHOT
>       wrap:mvn:de.jollyday/jollyday/0.4.6
>       wrap:mvn:de.jollyday/jollyday/0.5.2
> karaf@root()>
> {code}
> If I exclude bundle test-jolly from basit-test-feature, installation works as expected again (only new jolly feature will be installed)
> The test projects to reproduce the problem and org.apache.karaf.features.cfg are attached



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)