Author: brett
Date: Fri Feb 20 08:16:51 2009
New Revision: 746179

URL: http://svn.apache.org/viewvc?rev=746179&view=rev
Log:
[MNG-3379] add a configuration option for the number of threads. We need to use 
a system property so it can be set constantly (via MAVEN_OPTS), but cannot 
modify the settings file

Modified:
    
maven/components/branches/maven-2.1.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
    
maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/DefaultMaven.java

Modified: 
maven/components/branches/maven-2.1.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java?rev=746179&r1=746178&r2=746179&view=diff
==============================================================================
--- 
maven/components/branches/maven-2.1.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
 (original)
+++ 
maven/components/branches/maven-2.1.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
 Fri Feb 20 08:16:51 2009
@@ -29,7 +29,6 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.Executors;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
@@ -463,4 +462,9 @@
         }
     }
 
+    public synchronized void configureNumberOfThreads( int threads )
+    {
+        resolveArtifactPool.setCorePoolSize( threads );
+        resolveArtifactPool.setMaximumPoolSize( threads );
+    }
 }

Modified: 
maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=746179&r1=746178&r2=746179&view=diff
==============================================================================
--- 
maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
 (original)
+++ 
maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
 Fri Feb 20 08:16:51 2009
@@ -36,6 +36,8 @@
 import org.apache.maven.artifact.manager.WagonManager;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.artifact.resolver.DefaultArtifactResolver;
 import org.apache.maven.artifact.versioning.ArtifactVersion;
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
 import org.apache.maven.execution.BuildFailure;
@@ -269,7 +271,7 @@
 
         try
         {
-            resolveParameters( request.getSettings() );
+            resolveParameters( request.getSettings(), 
request.getExecutionProperties() );
         }
         catch ( ComponentLookupException e )
         {
@@ -609,7 +611,7 @@
      * @todo [JC] we should at least provide a mapping of protocol-to-proxy for
      * the wagons, shouldn't we?
      */
-    private void resolveParameters( Settings settings )
+    private void resolveParameters( Settings settings, Properties 
executionProperties )
         throws ComponentLookupException, ComponentLifecycleException, 
SettingsConfigurationException
     {
         // TODO: remove when components.xml can be used to configure this 
instead
@@ -754,6 +756,40 @@
         {
             container.release( wagonManager );
         }
+        
+        // Would be better in settings.xml, but it is not extensible yet
+        String numThreads = System.getProperty( "maven.artifact.threads" );
+        if ( numThreads != null )
+        {
+            int threads = 0;
+            try
+            {
+                threads = Integer.valueOf( numThreads ).intValue();
+
+                if ( threads < 1 )
+                {
+                    getLogger().warn( "Invalid number of threads '" + threads 
+ "' will be ignored" );
+                }
+            }
+            catch ( NumberFormatException e )
+            {
+                getLogger().warn( "Invalid number of threads '" + numThreads + 
"' will be ignored: " + e.getMessage() );
+            }
+            
+            if ( threads > 0 )
+            {
+                DefaultArtifactResolver artifactResolver = 
(DefaultArtifactResolver) container.lookup( ArtifactResolver.ROLE );
+                try
+                {
+                    artifactResolver.configureNumberOfThreads( threads );
+                    getLogger().debug( "Resolution thread pool size set to: " 
+ threads );
+                }
+                finally
+                {
+                    container.release( artifactResolver );
+                }
+            }
+        }
     }
 
     // ----------------------------------------------------------------------


Reply via email to