[ 
https://issues.apache.org/jira/browse/IVY-1148?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maarten Coene updated IVY-1148:
-------------------------------

    Component/s:     (was: Ant)
                 Core

> Encountered 'multiple artifacts retrieved to same file' error when module 
> does not have multiple artifacts
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: IVY-1148
>                 URL: https://issues.apache.org/jira/browse/IVY-1148
>             Project: Ivy
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.1.0
>         Environment: Windows or Linux, i386
>            Reporter: Carlton Brown
>            Assignee: Maarten Coene
>             Fix For: trunk
>
>         Attachments: ArtifactDownloadReport.patch
>
>
> Recently we started experiencing intermittent problems with the error 
> 'multiple artifacts retrieved to same module' for artifacts that did not have 
> multiple artifacts.    
> I have not been able to create a simple contrived error, though I can 
> generally reproduce it in our complex set of environments and artifacts.    
> It started happening when we started using the branch attribute in our 
> modules.    Usually the problem happens when a module has a both a direct and 
> an indirect dependency on another module.   We were working around it by 
> excluding the module from being resolved indirectly.
> During debugging, I traced it to the fact that a certain identical module 
> revision was not being handled as identical.   Specifically, in line 335 of 
> RetrieveEngine, the artifact was being added to the conflictsReports HashSet. 
>    The ArtifactDownloadReport.equals() was determining them to be equal, so I 
> did not expect them to be inserted.   But the 
> ArtifactDownloadReport.hashCode() was coming up with different integers.
> The cause of this is that one of the artifacts had an additional qualified 
> attributed called 'merged' which was not different, even though this was the 
> same version of the same artifact.   The value of the attribute looked like:  
>  
> orgA#moduleA#trunk;build1245 -> orgB#moduleB#trunk;build833
> Where module Z is the module being resolved, and it has a direct dependency 
> on module A and moduleB, and moduleB has a direct dependency on moduleA.
> So because of the different qualified attribute, an artifact that represented 
> the same file was returning a different hash code.
> I'm not sure what this extra 'merged' information represents.   It seems to 
> represent something about how the artifact was resolved.   There is no 
> possible retrieve pattern that could (or should) differentiate artifacts that 
> differ only in the 'merged' attribute, so I think this is a little too strict.
> My strategy, for which I am attaching a patch that passes existing unit 
> tests, is to use a hashCode() and equals() method that represents the minimum 
> necessary to determine whether an artifact maps to a unique file.   

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

Reply via email to