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

Richard S. Hall commented on FELIX-1792:
----------------------------------------

It is really difficult for me to say if the above scenario description is 
correct or not, since I am not able to reproduce by creating bundles for the 
above three manifests.

I mentioned two situations above where it might choose a lower version instead 
of a higher version; however, I do see a potential issue when selecting the 
"best candidate". In that case, we are selecting based on the highest version 
of the candidate, not the highest version of the capability. Thus, if bundle2 
is version 1.0.0 and bundle3 is version 2.0.0, then we will select bundle3.

I don't recall if this was the original intent of selecting the best candidate, 
but my intuition tells me this is a logical error. It makes more sense to find 
the matching capability from each resource, then select the capability with the 
highest version. I will try to create a patch for this, but it is not clear to 
me if this will address your scenario or not.

> Felix OBR seems to just randomly choose one of the satisifed bundles if more 
> than one bundle meets the requirement
> ------------------------------------------------------------------------------------------------------------------
>
>                 Key: FELIX-1792
>                 URL: https://issues.apache.org/jira/browse/FELIX-1792
>             Project: Felix
>          Issue Type: Bug
>          Components: Bundle Repository (OBR)
>    Affects Versions: bundlerepository-1.4.2
>         Environment: n/a
>            Reporter: david small99
>
> I have one bundle bundle1, which imports a package called com.obr.bundle
> Bundle1's manifest:
> Manifest-Version: 1.0
> Ant-Version: Apache Ant 1.7.0
> Bundle-ManifestVersion: 2
> Bundle-Name: Bundle Plug-in
> Bundle-SymbolicName: com.obr.bundle1
> Bundle-Version: 1.0.0
> Export-Package: com.obr.bundle1
> Import-Package: com.obr.bundle;version="[1.2.0.999,3.2.2.bz]"
> There are two bundles in my repositories, bundler2 and bundle 3. Both of them 
> export package com.obr.bundle. Below are their manifest files.
> Bundle2
> Manifest-Version: 1.0
> Ant-Version: Apache Ant 1.7.0
> Bundle-ManifestVersion: 2
> Bundle-Name: Bundle Plug-in
> Bundle-SymbolicName: com.obr.bundle2
> Bundle-Version: 1.0.0
> Bundle-Vendor: xxx
> Import-Package: a.b.c
> Export-Package: com.obr.bundle;version=3.2.2.blah
> Bundle3:
> Manifest-Version: 1.0
> Ant-Version: Apache Ant 1.7.0
> Bundle-ManifestVersion: 2
> Bundle-Name: Bundle Plug-in
> Bundle-SymbolicName: com.obr.bundle3
> Bundle-Version: 1.0.0
> Import-Package: a.b.c
> Export-Package: com.obr.bundle;version=3.1
> As you can see, both bundle2 and bundle3 meet the requirements of bundle1. I 
> hope the highest package version, which is bundle2, is chosen by felix obr. 
> However, sometimes bundle 3 was chosen instead of bundle2. The behaviour is 
> random.
> Am I right to say that the Felix obr runtime just picks the first bundle that 
> meets the requirements and then stop searching for any more eligible bundles?
> Thanks

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

Reply via email to