You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2016/05/01 12:57:04 UTC

[06/15] maven-aether git commit: Bug 448409 - Output being spammed with "Using mirror ..." messages when running Maven with -X option

Bug 448409 - Output being spammed with "Using mirror ..." messages when running Maven with -X option

Reduced debug logging for mirror selection to log a given repository pair only once per session


Project: http://git-wip-us.apache.org/repos/asf/maven-aether/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-aether/commit/e6be118d
Tree: http://git-wip-us.apache.org/repos/asf/maven-aether/tree/e6be118d
Diff: http://git-wip-us.apache.org/repos/asf/maven-aether/diff/e6be118d

Branch: refs/heads/1.0.x
Commit: e6be118d62c465f4622bd59a6d7750c971ac9da6
Parents: 535df40
Author: Benjamin Bentmann <be...@sonatype.com>
Authored: Tue Nov 11 15:04:58 2014 +0100
Committer: Benjamin Bentmann <be...@sonatype.com>
Committed: Tue Nov 11 15:04:58 2014 +0100

----------------------------------------------------------------------
 .../impl/DefaultRemoteRepositoryManager.java    | 58 +++++++++++++++++++-
 1 file changed, 56 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-aether/blob/e6be118d/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java
index ccb618a..8a54d62 100644
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java
+++ b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java
@@ -11,12 +11,14 @@
 package org.eclipse.aether.internal.impl;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.ListIterator;
 
 import javax.inject.Inject;
 import javax.inject.Named;
 
+import org.eclipse.aether.RepositoryCache;
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.impl.RemoteRepositoryManager;
 import org.eclipse.aether.impl.UpdatePolicyAnalyzer;
@@ -42,6 +44,39 @@ public class DefaultRemoteRepositoryManager
     implements RemoteRepositoryManager, Service
 {
 
+    private static final class LoggedMirror
+    {
+
+        private final Object[] keys;
+
+        public LoggedMirror( RemoteRepository original, RemoteRepository mirror )
+        {
+            keys = new Object[] { mirror.getId(), mirror.getUrl(), original.getId(), original.getUrl() };
+        }
+
+        @Override
+        public boolean equals( Object obj )
+        {
+            if ( this == obj )
+            {
+                return true;
+            }
+            else if ( !( obj instanceof LoggedMirror ) )
+            {
+                return false;
+            }
+            LoggedMirror that = (LoggedMirror) obj;
+            return Arrays.equals( keys, that.keys );
+        }
+
+        @Override
+        public int hashCode()
+        {
+            return Arrays.hashCode( keys );
+        }
+
+    }
+
     private Logger logger = NullLoggerFactory.LOGGER;
 
     private UpdatePolicyAnalyzer updatePolicyAnalyzer;
@@ -121,8 +156,7 @@ public class DefaultRemoteRepositoryManager
 
                 if ( mirrorRepository != null )
                 {
-                    logger.debug( "Using mirror " + mirrorRepository.getId() + " (" + mirrorRepository.getUrl()
-                        + ") for " + recessiveRepository.getId() + " (" + recessiveRepository.getUrl() + ")." );
+                    logMirror( session, recessiveRepository, mirrorRepository );
                     repository = mirrorRepository;
                 }
             }
@@ -179,6 +213,26 @@ public class DefaultRemoteRepositoryManager
         return result;
     }
 
+    private void logMirror( RepositorySystemSession session, RemoteRepository original, RemoteRepository mirror )
+    {
+        if ( !logger.isDebugEnabled() )
+        {
+            return;
+        }
+        RepositoryCache cache = session.getCache();
+        if ( cache != null )
+        {
+            Object key = new LoggedMirror( original, mirror );
+            if ( cache.get( session, key ) != null )
+            {
+                return;
+            }
+            cache.put( session, key, Boolean.TRUE );
+        }
+        logger.debug( "Using mirror " + mirror.getId() + " (" + mirror.getUrl() + ") for " + original.getId() + " ("
+            + original.getUrl() + ")." );
+    }
+
     private String getKey( RemoteRepository repository )
     {
         return repository.getId();