Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.3.1
-
None
Description
I am seeing an issue with the remote proxying code that looks like it can cause a significant amount of unnecessary network traffic if multiple remote proxies have been configured.
Here is an example of what is happening (after enabling logging in org.apache.maven.archiva.proxy package):
DEBUG org.apache.maven.archiva.proxy.DefaultRepositoryProxyConnectors - Retrieving org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.pom from Central Repository if updated
DEBUG org.apache.maven.archiva.proxy.DefaultRepositoryProxyConnectors - Artifact org.apache.maven.shared:maven-shared-io:1.1::pom not updated on repository "central".
DEBUG org.apache.maven.archiva.proxy.DefaultRepositoryProxyConnectors - Path [org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.pom] is not part of defined whitelist (skipping transfer from repository [Java.net Repository for Maven 2]).
DEBUG org.apache.maven.archiva.proxy.DefaultRepositoryProxyConnectors - Retrieving org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.pom from neo4j-public-repository if updated
DEBUG org.apache.maven.archiva.proxy.DefaultRepositoryProxyConnectors - Artifact org.apache.maven.shared:maven-shared-io:1.1::pom not found on repository "neo4j".
DEBUG org.apache.maven.archiva.proxy.DefaultRepositoryProxyConnectors - Retrieving org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.pom from JBoss if updated
DEBUG org.apache.maven.archiva.proxy.DefaultRepositoryProxyConnectors - Artifact org.apache.maven.shared:maven-shared-io:1.1::pom not found on repository "jboss".
DEBUG org.apache.maven.archiva.proxy.DefaultRepositoryProxyConnectors - Retrieving org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.pom from Codehaus Repository if updated
DEBUG org.apache.maven.archiva.proxy.DefaultRepositoryProxyConnectors - Artifact org.apache.maven.shared:maven-shared-io:1.1::pom not found on repository "codehaus".
DEBUG org.apache.maven.archiva.proxy.DefaultRepositoryProxyConnectors - Exhausted all target repositories, artifact org.apache.maven.shared:maven-shared-io:1.1::pom not found.
From the logs it appears that the first proxy repository returned that the resource is not out of date and exists on disk. However, this doesn't cause Archiva to stop looking for the repository - instead it looks for the "found" resource in all of the other repositories.
The code in question is the loop in fetchFromProxies in DefaultRepositoryProxyConnectors.java. I think it should return immediately after finding that the resource hasn't been modified on the first proxy it finds (when catching NotModifiedException).