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

Karl Pauls commented on SLING-9860:
-----------------------------------

An example where the above becomes problematic is when you have a bundle that 
has problematic meta-data which makes the substitution go wrong e.g.: the 
org.yaml:snakeyaml bundles have meta-data that is somewhat problematic. They 
import what they export for some packages but not for all - unfortunately, some 
of the packages they import have dependencies on the packages they don't import 
(and they don't capture that with uses-constraints). Consequently, one can get 
LinkageErrors if e.g. org.yaml:snakeyaml:1.27 and org.yaml:snakeyaml:1.24 are 
used side-by-side. 

When using the current ALL merge, the result would be that 
org.yaml:snakeyaml:1.24 is in both features - which would not allow e.g. the 
api-regions to force it to wire to itself for the broken imports. If we do the 
change proposed here, it would only be in the original feature - allowing the 
api-regions to force the right resolution. 

> Merging artifacts with the ALL strategy should keep the origins for clashing 
> bundles and their origins only 
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: SLING-9860
>                 URL: https://issues.apache.org/jira/browse/SLING-9860
>             Project: Sling
>          Issue Type: Improvement
>          Components: Feature Model
>    Affects Versions: Feature Model 1.2.10
>            Reporter: A. J. David Bosschaert
>            Assignee: A. J. David Bosschaert
>            Priority: Major
>             Fix For: Feature Model 1.2.12
>
>
> When merging 2 features that both contain the same artifact, but in different 
> versions, both artifacts are preserved, however, the feature-origins of one 
> of the artifact contains both features instead of just its own feature.
> For example Feature A contains:
>  * bundle org.foo:bar:1.2
> And Feature B contains
>  * bundle org.foo:bar:1.3
> Then once merged with the ALL strategy the resulting feature contains the 
> artifact with  (origins A,B).
> While this allows for package substitution to work between the bundles it can 
> be problematic in cases where that is not desired for isolation purposes. As 
> the interpretation of the origins is up to extensions, it seems better to not 
> make the union decision in this place but leave it up to merge extensions and 
> handlers later. 
> In other words, we should change this so that the origins for version 1.2 
> should be just A, not both A and B.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to