You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ivy-commits@incubator.apache.org by "Johan Stuyts (JIRA)" <ji...@apache.org> on 2007/01/25 08:13:49 UTC

[jira] Commented: (IVY-389) Detection of newer and better artifacts should not happen if 'checkModified' is set to 'false'

    [ https://issues.apache.org/jira/browse/IVY-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12467280 ] 

Johan Stuyts commented on IVY-389:
----------------------------------

I think I found the problem: ChainResolver does not check the cache but leaves that to the child resolvers. A child resolver will only return an item from the cache if the item is resolved by itself.

I want to extend ChainResolver so it checks the cache before resolving the dependency using its child resolvers. The issue I am facing is: when is ChainResolver allowed to use the cache, and when must it resolve the dependency using its child resolvers?

To make sure the solution will not break anything I think the following assertions must hold:
- if the cache check is added to ChainResolver, it does not matter from which resolver the dependency in the cache came from. i.e. ChainResolver will return a dependency from any resolver from the cache.
- The 'returnFirst' option of ChainResolver does not influence the decision to use the cache or to use the child resolvers. 'returnFirst' only applies if the decision is made to search the child resolvers.
- ChainResolver is allowed to check the cache if all of the following conditions are satisfied:
    - the revision ID of the dependency is not dynamic.
    - The revision ID of the module is not changing (the changing matcher is not used at all in ChainResolver currently).
    - ChainResolver has 'checkmodified' set to 'false' (this option is not supported by ChainResolver currently).

Are the assertions above correct and is nothing missing?


> Detection of newer and better artifacts should not happen if 'checkModified' is set to 'false'
> ----------------------------------------------------------------------------------------------
>
>                 Key: IVY-389
>                 URL: https://issues.apache.org/jira/browse/IVY-389
>             Project: Ivy
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.4.1
>            Reporter: Johan Stuyts
>            Priority: Minor
>
> With 'checkModified' set to 'false' Ivy still looks for an artifact in repositories when there is a copy of the artifact in the cache. The repositories that are searched are the ones that are specified before the repository from which the copy in the cache was retrieved. The latter is not contacted.
> The above happens when 'returnFirst' is set to 'true' on the chain of repositories.
> Here is some example output from a build:
>      local: no ivy file nor artifact found for [ javax.jdo | jdo2-api | 2.0 ]
>              tried C:\home\jstuyts\data\ivy\hippo-open-source\local/javax.jdo/jdo2-api/2.0/ivy-2.0.xml
>              tried C:\home\jstuyts\data\ivy\hippo-open-source\local/javax.jdo/jdo2-api/2.0/jdo2-api-2.0.jar
>     CLIENT ERROR: Not Found url=http://repository.hippocms.org/ivy/javax.jdo/jdo2-api/2.0/ivy-2.0.xml
>     CLIENT ERROR: Not Found url=http://repository.hippocms.org/ivy/javax.jdo/jdo2-api/2.0/jdo2-api-2.0.jar
>      hipporep: no ivy file nor artifact found for [ javax.jdo | jdo2-api | 2.0 ]
>              tried http://repository.hippocms.org/ivy/javax.jdo/jdo2-api/2.0/ivy-2.0.xml
>              tried http://repository.hippocms.org/ivy/javax.jdo/jdo2-api/2.0/jdo2-api-2.0.jar
>      hippomavenrep: revision in cache: [ javax.jdo | jdo2-api | 2.0 ]
>      found [ javax.jdo | jdo2-api | 2.0 ] in hippomavenrep

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.