The bug report can be found here: https://bugs.eclipse.org/bugs/show_bug.cgi?id=257230
As it stands it is a known problem that
the Mirror Application has a tendency to fail while downloading artifacts.
As a temporary work around I implemented the -ignoreErrors argument but
this is not an acceptable solution.
To summary the bug report, getArtifacts(IArtifactRequest)
implements code for retrying and using mirrors and eventually calls getArtifact(IArtifactDescriptor).
The Mirror Application calls getRawArtifact(IArtifactDescriptor) which
uses the same download code as getArtifact(IArtifactDescriptor). The result
is these two calls do not retry failed downloads.
As I see it, there are two options:
move the retry code into the getArtifact and getRawArtifact methods or
modify the mirror application to use IArtifactRequests. Because we don't
want to the mirror application to perform the processing steps of an artifact
this will require a getRawArtifact(IArtifactRequest) or possibly a getArtifact(IArtifactRequest,
boolean) where the boolean denotes if the artifact should be raw or processed.