Thursday, March 12, 2009, 2:23:16 PM, Brown, Carlton wrote: >> -----Original Message----- >> From: Daniel Dekany [mailto:[email protected]] >> Sent: Wednesday, March 11, 2009 5:59 PM >> To: Daniel Dekany >> Subject: Re: [solved] How to prevent "unknown resolver" errors? >> >> Wednesday, March 11, 2009, 7:22:42 PM, Daniel Dekany wrote: >> > Wednesday, March 11, 2009, 5:26:04 PM, Brown, Carlton wrote: >> >> It's documented, although the implications are not >> explained enough. >> >> http://ant.apache.org/ivy/history/latest-release/concept.html#cache >> >> >> >> The subtle part is that Ivy actually uses 2 caches, a resolution >> >> cache and a repository cache. >> [snip] >> > But I guess I shouldn't use ${user.home}/.ivy2/cache as >> > *repository* cache either. Certainly some other projects >> will use that >> > too, and if they don't use lockStrategy="artifact-lock"... >> and I bet >> > most will not. Well, it's rarely a problem, as two projects >> had to be >> > built in parallel for that to be problem... but still, does it boil >> > down to that most projects (or company) should use it's own caches >> > (and not forgetting to set the *resolution* caches too)? >> [snip] >> >> To answer my above question... I now tried using separate >> *resolution* caches for each ivysetting.xml-s, but with the >> common per-user >> *repository* cache, ${user.home}/.ivy2/cache. As the >> ivysetting.xml-specific resolver names still get into >> ${user.home}/.ivy2/cache (yes, into the *repository* cache >> part of it), it can still cause "undefined resolver" errors >> in *other* projects that use ${user.home}/.ivy2/cache too. It >> doesn't cause errors in my project though, as it knows the >> custom resolvers. > > If you're getting this behavior, think you've either made an error in > configuration or uncovered a bug. Could you post your respective > config files rather than describing what you did?
I would believe that the authors are aware of this. Simply, the name of the last resolver of an artifact is stored in the ivydata-[revision].properties file as the "resolver" property. And that file belongs to the repository cache, not to the resolution cache, right? >> OK, so to recapitulate for the mail archives (experts please >> correct where I'm mistaken): >> >> First, note that there is *repository* cache VS *resolution* cache: >> http://ant.apache.org/ivy/history/latest-release/concept.html#cache >> >> It seems to me, the only safe solution is using a separate >> *repository* cache for each ivysettings.xml (at least), but >> it's enough to associate that cache with the custom resolvers >> (not to the built-in resolvers like "default", "local" and >> like; those you can <include> in your ivysettings.xml), so >> the cache of the Ibiblio artifacts can still remain global. >> Oh, and lockStrategy="artifact-lock" should not be forgotten >> if the repository cache will be accessed concurrently. >> >> Also, if I get it right, you should use at least one >> *resolution* cache per ivysettings.xml per user account, and >> that you better associate to each resolvers, i.e. even to the >> built-in ones. The last warning is certainly needless, since certainly you can't assign different resolution caches to different resolvers... it's a ivysettings.xml-scope setting as far as I saw. >> Actually I have to do it with even finer >> granularity: I use one resolution cache per ivysettings.xml >> per user account per project, because two projects that use >> the same ivysettings.xml may be built in parallel (automated >> integration builds on the server). > > Without seeing your config files I may be missing something somewhere, > but this seems like just a very circuitous way of specifying different > default caches in each ivysettings file that you use. This would > assign both the resolution cache and repository cache uniquely in each > settings file. Simply, since multiple projects use the same ivysettings.xml, and they may be built in parallel (think about a continuos integration server), and the resolution caches shouldn't be accessed concurrently (according to the Ivy docs), I think I can't use just one resolution cache per ivysettings.xml. Can I? And then I'm still lucky that the same project is not built in two parallel processes sometimes... :) > ----------------------------------------- > ==================================================== > This message contains PRIVILEGED and CONFIDENTIAL > information that is intended only for use by the > named recipient. If you are not the named recipient, > any disclosure, dissemination, or action based on > the contents of this message is prohibited. In such > case please notify us and destroy and delete all > copies of this transmission. Thank you. > ==================================================== -- Best regards, Daniel Dekany
