[ 
https://issues.apache.org/jira/browse/FELIX-2528?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Karl Pauls updated FELIX-2528:
------------------------------

    Fix Version/s: framework-3.0.2
                       (was: framework-3.2.0)

> Potential performance issue in resolver when uses constraint conflict is 
> detected
> ---------------------------------------------------------------------------------
>
>                 Key: FELIX-2528
>                 URL: https://issues.apache.org/jira/browse/FELIX-2528
>             Project: Felix
>          Issue Type: Improvement
>          Components: Framework
>    Affects Versions: framework-3.0.0, framework-3.0.1
>            Reporter: Richard S. Hall
>            Assignee: Richard S. Hall
>             Fix For: framework-3.0.2
>
>
> Whenever the resolver detects a uses constraint conflict, it tries to create 
> two permutations of its solution search space. Since a conflict effectively 
> arises between two parties (an existing package constraint and a package 
> constraint being added), the algorithm creates a potential solution 
> permutation removing the opposite party from each, since it doesn't know 
> which one may ultimately lead to a correct solution. The permutation removing 
> the added package constraint candidates is called a "uses" permutation (since 
> it permutates the package being used) while the permutation removing the 
> existing package constraint is called an "import" permutation (since it 
> generally is causing a backtrack on a previously selected imported package).
> The algorithm is basically depth-first search, which ultimately results in it 
> giving priority to the "uses" permutations. This means it won't backtrack on 
> any choices for imports until it determines that a previous choice was 
> incorrect. This appears to work fairly well in practice. The downside is that 
> it is possible that we keep detecting conflicts related to an incorrect 
> import decision before determining that the original import decision was 
> incorrect. This results in lots of import permutations being generated that 
> are effectively smaller and smaller subsets of each other. This can consume a 
> lot of memory which slows things down as well as creates lots of largely 
> repetitive permutations to process.
> In short, we need to try to detect if we've already permutated an import and 
> not do it again. 

-- 
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