You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2014/01/26 15:53:25 UTC

svn commit: r1561498 - /maven/plugins/trunk/maven-scm-publish-plugin/src/main/java/org/apache/maven/plugins/scmpublish/AbstractScmPublishMojo.java

Author: rfscholte
Date: Sun Jan 26 14:53:25 2014
New Revision: 1561498

URL: http://svn.apache.org/r1561498
Log:
[MSCMPUB-6] when creating a directory in svn, if checkout fails, wait a few seconds and retry

Modified:
    maven/plugins/trunk/maven-scm-publish-plugin/src/main/java/org/apache/maven/plugins/scmpublish/AbstractScmPublishMojo.java

Modified: maven/plugins/trunk/maven-scm-publish-plugin/src/main/java/org/apache/maven/plugins/scmpublish/AbstractScmPublishMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-scm-publish-plugin/src/main/java/org/apache/maven/plugins/scmpublish/AbstractScmPublishMojo.java?rev=1561498&r1=1561497&r2=1561498&view=diff
==============================================================================
--- maven/plugins/trunk/maven-scm-publish-plugin/src/main/java/org/apache/maven/plugins/scmpublish/AbstractScmPublishMojo.java (original)
+++ maven/plugins/trunk/maven-scm-publish-plugin/src/main/java/org/apache/maven/plugins/scmpublish/AbstractScmPublishMojo.java Sun Jan 26 14:53:25 2014
@@ -349,21 +349,50 @@ public abstract class AbstractScmPublish
         {
             ScmFileSet fileSet = new ScmFileSet( checkoutDirectory, includes, excludes );
 
-            ScmResult scmResult;
+            ScmResult scmResult = null;
             if ( tryUpdate && !forceCheckout )
             {
                 scmResult = scmProvider.update( scmRepository, fileSet );
             }
-            else if ( scmBranch == null )
-            {
-                scmResult = scmProvider.checkOut( scmRepository, fileSet );
-            }
             else
             {
-                ScmBranch scmBranch = new ScmBranch( this.scmBranch );
-                scmResult = scmProvider.checkOut( scmRepository, fileSet, scmBranch );
+                int attempt = 0;
+                while ( scmResult == null )
+                {
+                    try
+                    {
+                        if ( scmBranch == null )
+                        {
+                            scmResult = scmProvider.checkOut( scmRepository, fileSet );
+                        }
+                        else
+                        {
+                            ScmBranch scmBranch = new ScmBranch( this.scmBranch );
+                            scmResult = scmProvider.checkOut( scmRepository, fileSet, scmBranch );
+                        }
+                    }
+                    catch ( ScmException e )
+                    {
+                        // give it max 2 times to retry
+                        if ( attempt++ < 2 )
+                        {
+                            try
+                            {
+                                // wait 3 seconds
+                                Thread.sleep( 3 * 1000 );
+                            }
+                            catch ( InterruptedException ie )
+                            {
+                                // noop
+                            }
+                        }
+                        else
+                        {
+                            throw e;
+                        }
+                    }
+                }
             }
-
             checkScmResult( scmResult, "check out from SCM" );
         }
         catch ( ScmException e )