ant-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nicolas Lalevée (JIRA) <>
Subject [jira] [Resolved] (IVY-1300) Delivered ivy descriptor inconsistent with resolve report / retrieve and other post-resolve actions
Date Thu, 24 May 2012 22:44:14 GMT


Nicolas Lalevée resolved IVY-1300.

       Resolution: Fixed
    Fix Version/s: 2.3.0
         Assignee: Nicolas Lalevée

This time I look deeper into the code. At first I though it was incorrect for ResolveEngine.getDependencies()
to return evicted dependencies. So I tried another fix than yours. I got your provided test
cases working but then I was breaking the test IvyDeliverTest.testDifferentRevisionsForSameModule().
This last test is quite weird, I got a little confused. I started to work around that, actually
let ResolveEngine.getDependencies() return evicted dependencies.
Finally I got almost what you have in your patch.
So I applied your patch. Thanks you Ed.
> Delivered ivy descriptor inconsistent with resolve report / retrieve and other post-resolve
> ---------------------------------------------------------------------------------------------------
>                 Key: IVY-1300
>                 URL:
>             Project: Ivy
>          Issue Type: Bug
>    Affects Versions: 2.2.0
>            Reporter: Ed Burcher
>            Assignee: Nicolas Lalevée
>            Priority: Critical
>             Fix For: 2.3.0
>         Attachments: extratests.txt, patch.txt, patchfix.txt
> When there is a conflict with the following characteristics, there is inconsistency of
behaviour between most post-resolve actions, and the deliver action. Whereas retrieve / report
etc are correct w.r.t the selected revision, Deliver produces an ivy descriptor that contains
the evicted revision. 
> The characteristics are:
> * Branches are in use
> * No special conflict manager or latest strategies are configured
> * There is a direct dependency on the module, and a transitive dependency on it
> * The transitive dependency has a higher version number than the direct dependency, BUT
is on a different branch
> * This is a conflict; the (default) conflict manager selects the indirect/transitive
one because its revision is 'latest' as you would expect
> * The ivy report and retrieve results reflect this selection
> * The delivered ivy descriptor contains the evicted version of the dependency
> Notes
> * Force is not in use
> * It is appreciably the case that it is most often an error (logically speaking) to have
a conflict amongst different versions on different branches. Nevertheless, one expects ivy
to behave consistently.
> In my view, here are the factors causing this:
> * the properties file written during the resolve process does not contain the selected
branch information, only the requested branch (and only for the most direct dependency spec,
if there are several)
> * in deliver, the iterator of the dependencies does not process those dependency IvyNodes
that are not referenced directly by the root IvyNode. So where an indirect IvyNode was selected,
it is ignored. This is a logic error.
> The properties file written during the resolve seems to be a frequent source of bugs.
I wonder why the xml report is not used? IVY-1159 was also down to insufficient information
in the properties file.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


View raw message