You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/05/28 23:13:19 UTC
svn commit: r779772 - in /maven/components/branches/maven-2.1.x: ./
maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/
maven-artifact-manager/src/test/java/org/apache/maven/artifact/resolver/
Author: bentmann
Date: Thu May 28 21:13:19 2009
New Revision: 779772
URL: http://svn.apache.org/viewvc?rev=779772&view=rev
Log:
[MNG-4179] [regression] Artifact download hangs upon transfer failure
o Merged from r779768
Modified:
maven/components/branches/maven-2.1.x/ (props changed)
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-artifact-manager/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java
Propchange: maven/components/branches/maven-2.1.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu May 28 21:13:19 2009
@@ -3,6 +3,6 @@
/maven/components/branches/maven-2.1.0-M1-RC:690315,691793-694304
/maven/components/branches/maven-2.1.0-RC:688883,689695,689976,689990,752168,752428,752622,752653,753089-753090,753320,755086,755199,755215
/maven/components/branches/maven-2.1.x:751686
-/maven/components/branches/maven-2.2.x:769913
+/maven/components/branches/maven-2.2.x:769913,779768
/maven/components/trunk:572229,720001,721902,726845,729292
/maven/sandbox/branches/maven/MNG-3379:678167
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=779772&r1=779771&r2=779772&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 Thu May 28 21:13:19 2009
@@ -431,11 +431,6 @@
try
{
resolveArtifact( node );
- if ( i.hasNext() )
- {
- pool.execute( new ResolveArtifactTask( pool, latch, nodes, localRepository, resolvedArtifacts,
- missingArtifacts, resolutionExceptions ) );
- }
}
catch ( ArtifactResolutionException e )
{
@@ -444,6 +439,12 @@
finally
{
latch.countDown();
+
+ if ( i.hasNext() )
+ {
+ pool.execute( new ResolveArtifactTask( pool, latch, nodes, localRepository, resolvedArtifacts,
+ missingArtifacts, resolutionExceptions ) );
+ }
}
}
Modified: maven/components/branches/maven-2.1.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java?rev=779772&r1=779771&r2=779772&view=diff
==============================================================================
--- maven/components/branches/maven-2.1.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java (original)
+++ maven/components/branches/maven-2.1.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java Thu May 28 21:13:19 2009
@@ -361,5 +361,60 @@
control.verify();
}
+
+ /**
+ * Test deadlocking in case a transfer error occurs within a group of multiple artifacts (MNG-4179).
+ */
+ public void testResolveMultipleWithException()
+ throws Exception
+ {
+ ArtifactRepository repository = remoteRepository();
+ List remoteRepositories = Collections.singletonList( repository );
+
+ Artifact a1 = createArtifact( "testGroup", "artifactId", "1.0", "jar" );
+
+ Artifact a2 = createArtifact( "testGroup", "anotherId", "1.0", "jar" );
+
+ ArtifactMetadataSource mds = new ArtifactMetadataSourceImplementation();
+
+ DefaultArtifactResolver artifactResolver = (DefaultArtifactResolver) this.artifactResolver;
+
+ MockControl control = MockControl.createControl( WagonManager.class );
+ WagonManager wagonManager = (WagonManager) control.getMock();
+ artifactResolver.setWagonManager( wagonManager );
+
+ wagonManager.isOnline();
+ control.setReturnValue( true );
+ wagonManager.getArtifact( a1, remoteRepositories );
+ control.setThrowable( new TransferFailedException( "message" ) );
+ wagonManager.getMirrorRepository( repository );
+ control.setReturnValue( repository );
+
+ wagonManager.isOnline();
+ control.setReturnValue( true );
+ wagonManager.getArtifact( a2, remoteRepositories );
+ control.setThrowable( new TransferFailedException( "message" ) );
+ wagonManager.getMirrorRepository( repository );
+ control.setReturnValue( repository );
+
+ control.replay();
+
+ try
+ {
+ artifactResolver.resolveTransitively( new LinkedHashSet( Arrays.asList( new Artifact[] { a1, a2 } ) ),
+ projectArtifact, remoteRepositories, localRepository(), mds );
+ fail( "Resolution succeeded when it should have failed" );
+ }
+ catch ( ArtifactResolutionException expected )
+ {
+ List repos = expected.getRemoteRepositories();
+ assertEquals( 1, repos.size() );
+ assertEquals( "test", ( (ArtifactRepository) repos.get( 0 ) ).getId() );
+
+ assertEquals( "testGroup", expected.getGroupId() );
+ }
+
+ control.verify();
+ }
}