ant-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Xavier Hanin (JIRA)" <j...@apache.org>
Subject [jira] Commented: (IVY-707) Deliver delivers the wrong version when a dynamic revision is evicted before being resolved
Date Fri, 18 Jan 2008 17:50:33 GMT

    [ https://issues.apache.org/jira/browse/IVY-707?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12560480#action_12560480
] 

Xavier Hanin commented on IVY-707:
----------------------------------

I'm now wondering if this is really a bug or not... and if we should handle the latest-compatible
case specifically or not.

Let's take an example without the latest-compatible conflict manager:
#A -> { #B;1.0 #C;1+ }
#B;1.0 -> { #C;2.0 }

When Ivy resolves this, it first find that B depends on #C;2.0, and thus can evict #C;1+ before
actually resolving the actual revision of #C;1+

Hence, if you deliver #A you'll still have the dynamic revision for #C. 

This is exactly what happens in your case... but in this case does it make sense to deliver
a file where #C;1+ is resolved to #C;2.0? This is what you end up with, and if you resolve
again the delivered Ivy file you will end up with the same revisions, so it seems ok. But
it also seems rather odd to replace a dynamic revision by a revision which doesn't match.
If it weren't a dynamic revision, it would be kept as is even if the revision is evicted.

OTOH, keeping things as is should have no impact on resolution results: indeed the dynamic
revision is not used at all to resolve the dependencies, since it is evicted before being
evaluated. It may have a performance impact though, but it's difficult to say.

Now let's go back to the latest compatible case. In this case, since it resolves only compatible
revisions, we can't end up replacing a dynamic revision by something which doesn't match...
hence my argument for the general case is less obvious. The problem is that the fix is not
too difficult if it fixes the general case... but is not so easy if we want to apply it only
for the latest-compatible case.

So, any opinion on how to handle this?



> 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;working@bb02f50.unx.sas.com
> [ivy:resolve] 	confs: [compile]
> [ivy:resolve] 	validate = true
> [ivy:resolve] resolving dependencies for configuration 'compile'
> [ivy:resolve] == resolving dependencies for SAS#test;working@bb02f50.unx.sas.com [compile]
> [ivy:resolve] loadData of SAS#test;working@bb02f50.unx.sas.com of rootConf=compile
> [ivy:resolve] == resolving dependencies SAS#test;working@bb02f50.unx.sas.com->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;working@bb02f50.unx.sas.com->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;working@bb02f50.unx.sas.com->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;working@bb02f50.unx.sas.com->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;working@bb02f50.unx.sas.com->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;working@bb02f50.unx.sas.com->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/resolved-SAS-test-working@bb02f50.unx.sas.com.xml
> [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;working@bb02f50.unx.sas.com 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;working@bb02f50.unx.sas.com 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.


Mime
View raw message