[
https://issues.apache.org/jira/browse/IVY-707?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12561014#action_12561014
]
Nascif Abousalh-Neto commented on IVY-707:
------------------------------------------
Xavier,
I don't understand why you don't have the information in this particular case -
not sure if you are referring to Jim's example or to your own? In Jim's case, I
think there is clearly a bug since there is no conflict in the graph to be
resolved or node to be evicted. Note also that he got different results by
changing the order the dependencies were declared in the dependent ivy.xml file
- which should not IMHO affect the result of the resolution.
In general I think that if a version of a dependency is available in the
repository at the time of resolution, than that version should be the used in
the delivered, resolved ivy.xml of the project being resolved. You can say this
is an application of the Principle of Least Surprise - the resolved ivy.xml
captures the result of the resolution process in a given moment in time, for a
given configuration.
I see your point about how a change in the conflict manager can affect
reproducibility even with static versions - I still can have conflict versions
if at the time of publishing I used a conflict manager that allowed them to be
published, like latest-revision. Our hope is that by using something that fails
the build in case of conflict, like strict or latest-compatible, we would keep
the repository free of conflicts. But although this is a very interesting
discussion, it is out of topic. :-)
> Deliver delivers the wrong version when a dynamic revision is evicted before
> being resolved
> -------------------------------------------------------------------------------------------
>
> Key: IVY-707
> URL: https://issues.apache.org/jira/browse/IVY-707
> Project: Ivy
> Issue Type: Bug
> Affects Versions: 2.0.0-beta-1
> Environment: Unix
> Reporter: Jim Adams
> Assignee: Xavier Hanin
> Fix For: 2.0.0-beta-2
>
> Attachments: testIvy.zip
>
>
> I have 3 modules A, B, and C. C->B->A. These are in the repo with version
> 1.0.0. I then have an ivy.xml for the module test which has dependencies of
> A(latest.integration), C(latest.integration) and B(latest.integration) in
> that order. Order seems to change the outcome. During the resolve I see
> messages when resolving each of the modules that seems incorrect but that may
> only be a symptom of the real problem. A resolves to a version, C resolves
> and brings in B. B resolves A again but instead of listing the version number
> in the repo for A it lists latest.integration. In this case that will return
> the correct version but it seems wrong to see latest.integration and not
> 1.0.0. In any case the resolve finishes and we deliver the ivy.xml file and
> publish it. What gets published includes a list of dependencies that includes
> latest.integration for the resolved version. This is clearly wrong and is
> causing us lots of pain in our environment. If we move to latest-revision as
> the conflict manager then the problem goes away.
> Here are the 3 ivy files from the repo:
> <?xml version="1.0" encoding="UTF-8"?>
> <ivy-module version="1.3">
> <info organisation="SAS" module="a" revision="1.0.0.aaa_a"
> status="integration" publication="20080117045213"/>
> <configurations>
> <conf name="compile"/>
> </configurations>
> <publications/>
> <dependencies>
>
> </dependencies>
> </ivy-module>
> <?xml version="1.0" encoding="UTF-8"?>
> <ivy-module version="1.3">
> <info organisation="SAS" module="b" revision="1.0.0.bbb_b"
> status="integration" publication="20080117045213"/>
> <configurations>
> <conf name="compile"/>
> </configurations>
> <publications/>
> <dependencies>
> <dependency name="a" rev="1.0.0.aaa_a" org="SAS" conf="compile"/>
> </dependencies>
> </ivy-module>
> <?xml version="1.0" encoding="UTF-8"?>
> <ivy-module version="1.3">
> <info organisation="SAS" module="c" revision="1.0.0.ccc_c"
> status="integration" publication="20080117045213"/>
> <configurations>
> <conf name="compile"/>
> </configurations>
> <publications/>
> <dependencies>
> <dependency name="b" rev="1.0.0.bbb_b" org="SAS" conf="compile"/>
> </dependencies>
> </ivy-module>
> Here is the source ivy.xml file:
> <?xml version='1.0' encoding='UTF-8'?>
> <ivy-module version='1.3'>
> <info status='integration' module='test' organisation='SAS'>
> <ivyauthor name='SAS Build Technologies Team'
> url='http://bt.unx.sas.com'/>
> <description>Please describe sas.svc.sec.login here.</description>
> </info>
> <configurations>
> <conf name='compile'/>
> <!--conf name='runtime'-->
> </configurations>
> <publications>
> </publications>
> <dependencies>
> <dependency name='a' rev='latest.integration' org='SAS' conf='compile'/>
> <dependency name='c' rev='latest.integration' org='SAS' conf='compile'/>
> <dependency name='b' rev='latest.integration' org='SAS' conf='compile'/>
> </dependencies>
> </ivy-module>
> and here is the published ivy file
> <?xml version="1.0" encoding="UTF-8"?>
> <ivy-module version="1.3">
> <info organisation="SAS" module="test" revision="20080117162421"
> status="integration" publication="20080117162421">
> <ivyauthor name="SAS Build Technologies Team"
> url="http://bt.unx.sas.com"/>
> <description>Please describe sas.svc.sec.login here.</description>
> </info>
> <configurations>
> <conf name="compile"/>
> <!--conf name='runtime'-->
> </configurations>
> <publications>
> </publications>
> <dependencies>
> <dependency name="a" rev="1.0.0.aaa_a" org="SAS" conf="compile"/>
> <dependency name="c" rev="1.0.0.ccc_c" org="SAS" conf="compile"/>
> <dependency name="b" rev="latest.integration" org="SAS" conf="compile"/>
> </dependencies>
> </ivy-module>
> Here is the resolve portion of the log:
> [ivy:resolve] parameter found as ivy variable: ivy.configurations=*
> [ivy:resolve] parameter found as ivy variable:
> ivy.resolve.default.type.filter=*
> [ivy:resolve] using ivy parser to parse file:/sasusr/u/sasjaa/testIvy/ivy.xml
> [ivy:resolve] post 1.3 ivy file: using exact as default matcher
> [ivy:resolve] :: resolving dependencies :: SAS#test;[EMAIL PROTECTED]
> [ivy:resolve] confs: [compile]
> [ivy:resolve] validate = true
> [ivy:resolve] resolving dependencies for configuration 'compile'
> [ivy:resolve] == resolving dependencies for SAS#test;[EMAIL PROTECTED]
> [compile]
> [ivy:resolve] loadData of SAS#test;[EMAIL PROTECTED] of rootConf=compile
> [ivy:resolve] == resolving dependencies SAS#test;[EMAIL
> PROTECTED]>SAS#a;latest.integration [compile->compile]
> [ivy:resolve] loadData of SAS#a;latest.integration of rootConf=compile
> [ivy:resolve] using sas-repo to resolve SAS#a;latest.integration
> [ivy:resolve] sas-repo: no latest strategy defined: using default
> [ivy:resolve] local: no namespace defined: using system
> [ivy:resolve] local: no latest strategy defined: using default
> [ivy:resolve] trying
> /sasusr/u/sasjaa/testIvy/repo/SAS/a/latest.integration/ivy.xml
> [ivy:resolve] tried
> /sasusr/u/sasjaa/testIvy/repo/SAS/a/latest.integration/ivy.xml
> [ivy:resolve] tried
> /sasusr/u/sasjaa/testIvy/repo/SAS/a/[revision]/ivy.xml
> [ivy:resolve] listing all in
> /sasusr/u/sasjaa/testIvy/repo/SAS/a/[revision]/ivy.xml
> [ivy:resolve] using local to list all in
> /sasusr/u/sasjaa/testIvy/repo/SAS/a/
> [ivy:resolve] found 1 resources
> [ivy:resolve] found revs: [1.0.0.aaa_a]
> [ivy:resolve] local: found md file for SAS#a;latest.integration
> [ivy:resolve] =>
> /sasusr/u/sasjaa/testIvy/repo/SAS/a/1.0.0.aaa_a/ivy.xml (1.0.0.aaa_a)
> [ivy:resolve] parser = ivy parser
> [ivy:resolve] no ivy file in cache for SAS#a;1.0.0.aaa_a: tried
> /r/sanyo.unx.sas.com/vol/vol2/u22/sasjaa/.ivy2/cache/SAS/a/ivy-1.0.0.aaa_a.xml
> [ivy:resolve] downloading
> /sasusr/u/sasjaa/testIvy/repo/SAS/a/1.0.0.aaa_a/ivy.xml ...
> [ivy:resolve] local: downloading
> /sasusr/u/sasjaa/testIvy/repo/SAS/a/1.0.0.aaa_a/ivy.xml
> [ivy:resolve] to
> /r/sanyo.unx.sas.com/vol/vol2/u22/sasjaa/.ivy2/cache/a/ivys/ivy.original-1.0.0.aaa_a.xml.part
> [ivy:resolve] [SUCCESSFUL ] SAS#a;1.0.0.aaa_a!ivy.original.xml(ivy)
> (35ms)
> [ivy:resolve] post 1.3 ivy file: using exact as default matcher
> [ivy:resolve] cache: parsed downloaded md file for SAS#a;1.0.0.aaa_a;
> parsed=SAS#a;1.0.0.aaa_a
> [ivy:resolve] [1.0.0.aaa_a] SAS#a
> [ivy:resolve] found SAS#a;1.0.0.aaa_a in local
> [ivy:resolve] [1.0.0.aaa_a] SAS#a;latest.integration
> [ivy:resolve] == resolving dependencies SAS#test;[EMAIL
> PROTECTED]>SAS#c;latest.integration [compile->compile]
> [ivy:resolve] loadData of SAS#c;latest.integration of rootConf=compile
> [ivy:resolve] using sas-repo to resolve SAS#c;latest.integration
> [ivy:resolve] trying
> /sasusr/u/sasjaa/testIvy/repo/SAS/c/latest.integration/ivy.xml
> [ivy:resolve] tried
> /sasusr/u/sasjaa/testIvy/repo/SAS/c/latest.integration/ivy.xml
> [ivy:resolve] tried
> /sasusr/u/sasjaa/testIvy/repo/SAS/c/[revision]/ivy.xml
> [ivy:resolve] listing all in
> /sasusr/u/sasjaa/testIvy/repo/SAS/c/[revision]/ivy.xml
> [ivy:resolve] using local to list all in
> /sasusr/u/sasjaa/testIvy/repo/SAS/c/
> [ivy:resolve] found 1 resources
> [ivy:resolve] found revs: [1.0.0.ccc_c]
> [ivy:resolve] local: found md file for SAS#c;latest.integration
> [ivy:resolve] =>
> /sasusr/u/sasjaa/testIvy/repo/SAS/c/1.0.0.ccc_c/ivy.xml (1.0.0.ccc_c)
> [ivy:resolve] parser = ivy parser
> [ivy:resolve] no ivy file in cache for SAS#c;1.0.0.ccc_c: tried
> /r/sanyo.unx.sas.com/vol/vol2/u22/sasjaa/.ivy2/cache/SAS/c/ivy-1.0.0.ccc_c.xml
> [ivy:resolve] downloading
> /sasusr/u/sasjaa/testIvy/repo/SAS/c/1.0.0.ccc_c/ivy.xml ...
> [ivy:resolve] local: downloading
> /sasusr/u/sasjaa/testIvy/repo/SAS/c/1.0.0.ccc_c/ivy.xml
> [ivy:resolve] to
> /r/sanyo.unx.sas.com/vol/vol2/u22/sasjaa/.ivy2/cache/c/ivys/ivy.original-1.0.0.ccc_c.xml.part
> [ivy:resolve] [SUCCESSFUL ] SAS#c;1.0.0.ccc_c!ivy.original.xml(ivy)
> (21ms)
> [ivy:resolve] post 1.3 ivy file: using exact as default matcher
> [ivy:resolve] cache: parsed downloaded md file for SAS#c;1.0.0.ccc_c;
> parsed=SAS#c;1.0.0.ccc_c
> [ivy:resolve] [1.0.0.ccc_c] SAS#c
> [ivy:resolve] found SAS#c;1.0.0.ccc_c in local
> [ivy:resolve] [1.0.0.ccc_c] SAS#c;latest.integration
> [ivy:resolve] == resolving dependencies
> SAS#c;latest.integration->SAS#b;1.0.0.bbb_b [compile->compile]
> [ivy:resolve] loadData of SAS#b;1.0.0.bbb_b of rootConf=compile
> [ivy:resolve] using sas-repo to resolve SAS#b;1.0.0.bbb_b
> [ivy:resolve] no ivy file in cache for SAS#b;1.0.0.bbb_b: tried
> /r/sanyo.unx.sas.com/vol/vol2/u22/sasjaa/.ivy2/cache/SAS/b/ivy-1.0.0.bbb_b.xml
> [ivy:resolve] trying
> /sasusr/u/sasjaa/testIvy/repo/SAS/b/1.0.0.bbb_b/ivy.xml
> [ivy:resolve] tried
> /sasusr/u/sasjaa/testIvy/repo/SAS/b/1.0.0.bbb_b/ivy.xml
> [ivy:resolve] local: found md file for SAS#b;1.0.0.bbb_b
> [ivy:resolve] =>
> /sasusr/u/sasjaa/testIvy/repo/SAS/b/1.0.0.bbb_b/ivy.xml (1.0.0.bbb_b)
> [ivy:resolve] parser = ivy parser
> [ivy:resolve] no ivy file in cache for SAS#b;1.0.0.bbb_b: tried
> /r/sanyo.unx.sas.com/vol/vol2/u22/sasjaa/.ivy2/cache/SAS/b/ivy-1.0.0.bbb_b.xml
> [ivy:resolve] downloading
> /sasusr/u/sasjaa/testIvy/repo/SAS/b/1.0.0.bbb_b/ivy.xml ...
> [ivy:resolve] local: downloading
> /sasusr/u/sasjaa/testIvy/repo/SAS/b/1.0.0.bbb_b/ivy.xml
> [ivy:resolve] to
> /r/sanyo.unx.sas.com/vol/vol2/u22/sasjaa/.ivy2/cache/b/ivys/ivy.original-1.0.0.bbb_b.xml.part
> [ivy:resolve] [SUCCESSFUL ] SAS#b;1.0.0.bbb_b!ivy.original.xml(ivy)
> (88ms)
> [ivy:resolve] post 1.3 ivy file: using exact as default matcher
> [ivy:resolve] cache: parsed downloaded md file for SAS#b;1.0.0.bbb_b;
> parsed=SAS#b;1.0.0.bbb_b
> [ivy:resolve] found SAS#b;1.0.0.bbb_b in local
> [ivy:resolve] == resolving dependencies
> SAS#b;1.0.0.bbb_b->SAS#a;latest.integration [compile->compile]
> [ivy:resolve] loadData of SAS#a;1.0.0.aaa_a of rootConf=compile
> [ivy:resolve] compile is loaded and no conf to load. Skip loading
> [ivy:resolve] == resolving dependencies SAS#test;[EMAIL
> PROTECTED]>SAS#b;latest.integration [compile->compile]
> [ivy:resolve] loadData of SAS#b;latest.integration of rootConf=compile
> [ivy:resolve] compile is evicted. Skip loading
> [ivy:resolve] == resolving dependencies SAS#test;[EMAIL
> PROTECTED]>SAS#b;1.0.0.bbb_b [compile->compile]
> [ivy:resolve] loadData of SAS#b;1.0.0.bbb_b of rootConf=compile
> [ivy:resolve] compile is loaded and no conf to load. Skip loading
> [ivy:resolve] == resolving dependencies SAS#test;[EMAIL
> PROTECTED]>SAS#b;latest.integration [compile->compile]
> [ivy:resolve] loadData of SAS#b;latest.integration of rootConf=compile
> [ivy:resolve] compile is evicted. Skip loading
> [ivy:resolve] == resolving dependencies SAS#test;[EMAIL
> PROTECTED]>SAS#b;1.0.0.bbb_b [compile->compile]
> [ivy:resolve] loadData of SAS#b;1.0.0.bbb_b of rootConf=compile
> [ivy:resolve] compile is loaded and no conf to load. Skip loading
> [ivy:resolve] Nbr of module to sort : 3
> [ivy:resolve] Sort dependencies of : SAS#a;1.0.0.aaa_a / Number of
> dependencies = 0
> [ivy:resolve] Sort done for : SAS#a;1.0.0.aaa_a
> [ivy:resolve] Sort dependencies of : SAS#c;1.0.0.ccc_c / Number of
> dependencies = 1
> [ivy:resolve] Sort dependencies of : SAS#b;1.0.0.bbb_b / Number of
> dependencies = 1
> [ivy:resolve] Module descriptor is processed : SAS#a;1.0.0.aaa_a
> [ivy:resolve] Sort done for : SAS#b;1.0.0.bbb_b
> [ivy:resolve] Sort done for : SAS#c;1.0.0.ccc_c
> [ivy:resolve] Module descriptor is processed : SAS#b;1.0.0.bbb_b
> [ivy:resolve] resolved ivy file produced in
> /r/sanyo.unx.sas.com/vol/vol2/u22/sasjaa/.ivy2/cache/[EMAIL PROTECTED]
> [ivy:resolve] :: downloading artifacts ::
> [ivy:resolve] :: resolution report :: resolve 846ms :: artifacts dl 1ms
> [ivy:resolve] :: evicted modules:
> [ivy:resolve] SAS#b;latest.integration by [SAS#b;1.0.0.bbb_b] in
> [compile]
> [ivy:resolve] in SAS#test;[EMAIL PROTECTED] with latest-compatible
> ---------------------------------------------------------------------
> | | modules || artifacts |
> | conf | number| search|dwnlded|evicted|| number|dwnlded|
> ---------------------------------------------------------------------
> | compile | 4 | 3 | 0 | 1 || 0 | 0 |
> ---------------------------------------------------------------------
> [ivy:resolve] Nbr of module to sort : 3
> [ivy:resolve] Sort dependencies of : SAS#a;1.0.0.aaa_a / Number of
> dependencies = 0
> [ivy:resolve] Sort done for : SAS#a;1.0.0.aaa_a
> [ivy:resolve] Sort dependencies of : SAS#c;1.0.0.ccc_c / Number of
> dependencies = 1
> [ivy:resolve] Sort dependencies of : SAS#b;1.0.0.bbb_b / Number of
> dependencies = 1
> [ivy:resolve] Module descriptor is processed : SAS#a;1.0.0.aaa_a
> [ivy:resolve] Sort done for : SAS#b;1.0.0.bbb_b
> [ivy:resolve] Sort done for : SAS#c;1.0.0.ccc_c
> [ivy:resolve] Module descriptor is processed : SAS#b;1.0.0.bbb_b
> [ivy:resolve] report for SAS#test;[EMAIL PROTECTED] compile produced
> in /r/sanyo.unx.sas.com/vol/vol2/u22/sasjaa/.ivy2/cache/SAS-test-compile.xml
> [ivy:resolve] resolve done (846ms resolve - 1ms download)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.