added retry when downloading content from external sources to hopefully avoid some false positives
git-svn-id: https://svn.apache.org/repos/asf/maven/sandbox/trunk@1765009 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/dist-tools/dist-tool-plugin/pom.xml b/dist-tools/dist-tool-plugin/pom.xml
index 0347d9e..ebff0f2 100644
--- a/dist-tools/dist-tool-plugin/pom.xml
+++ b/dist-tools/dist-tool-plugin/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven-parent</artifactId>
- <version>27</version>
+ <version>30</version>
<relativePath>../../../pom/maven/pom.xml</relativePath>
</parent>
diff --git a/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/JsoupRetry.java b/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/JsoupRetry.java
new file mode 100644
index 0000000..60f374d
--- /dev/null
+++ b/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/JsoupRetry.java
@@ -0,0 +1,68 @@
+package org.apache.maven.dist.tools;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.IOException;
+
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+
+/**
+ * Reads a url with Jsoup, retrying multiple times in case of IOException.
+ */
+public class JsoupRetry
+{
+ public static final int MAX_RETRY = 3;
+
+ public static final int WAIT_RETRY_SECONDS = 10;
+
+ public static Document get( String url )
+ throws IOException
+ {
+ for ( int i = 1; i <= MAX_RETRY; i++ )
+ {
+ try
+ {
+ return Jsoup.connect( url ).get();
+ }
+ catch ( IOException ioe )
+ {
+ System.err.println( "IOException try " + i + " while reading " + url + ": " + ioe.getClass() + " "
+ + ioe.getMessage() );
+
+ if ( i == MAX_RETRY )
+ {
+ throw new IOException( "IOException while reading " + url, ioe );
+ }
+ }
+
+ try
+ {
+ Thread.sleep( WAIT_RETRY_SECONDS * 1000 );
+ }
+ catch ( InterruptedException e )
+ {
+ // not expected to happen
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/index/DistCheckIndexPageMojo.java b/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/index/DistCheckIndexPageMojo.java
index aadcb54..5e7311f 100644
--- a/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/index/DistCheckIndexPageMojo.java
+++ b/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/index/DistCheckIndexPageMojo.java
@@ -34,12 +34,12 @@
import org.apache.maven.dist.tools.AbstractCheckResult;
import org.apache.maven.dist.tools.AbstractDistCheckMojo;
import org.apache.maven.dist.tools.ConfigurationLineInfo;
+import org.apache.maven.dist.tools.JsoupRetry;
import org.apache.maven.doxia.sink.Sink;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.reporting.MavenReportException;
-import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
@@ -288,14 +288,7 @@
if ( doc == null )
{
// document not yet downloaded: download and cache
- try
- {
- doc = Jsoup.connect( indexPage.url ).get();
- }
- catch ( IOException ioe )
- {
- throw new IOException( "IOException while reading " + indexPage.url, ioe );
- }
+ doc = JsoupRetry.get( indexPage.url );
indexPage.document = doc;
}
diff --git a/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/prerequisites/GetPrerequisites.java b/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/prerequisites/GetPrerequisites.java
index 0304962..d59d8e6 100644
--- a/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/prerequisites/GetPrerequisites.java
+++ b/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/prerequisites/GetPrerequisites.java
@@ -26,7 +26,7 @@
import java.util.Map;
import org.apache.maven.artifact.versioning.ArtifactVersion;
-import org.jsoup.Jsoup;
+import org.apache.maven.dist.tools.JsoupRetry;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
@@ -104,7 +104,7 @@
{
String url = getPluginInfoUrl( pluginName );
- Document doc = Jsoup.connect( url ).get();
+ Document doc = JsoupRetry.get( url );
Elements select = doc.select( "table.bodyTable" ); // Stylus skin
diff --git a/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/site/DistCheckSiteMojo.java b/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/site/DistCheckSiteMojo.java
index d98eb82..3108c75 100644
--- a/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/site/DistCheckSiteMojo.java
+++ b/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/site/DistCheckSiteMojo.java
@@ -30,6 +30,7 @@
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.dist.tools.AbstractDistCheckMojo;
import org.apache.maven.dist.tools.ConfigurationLineInfo;
+import org.apache.maven.dist.tools.JsoupRetry;
import org.apache.maven.doxia.sink.Sink;
import org.apache.maven.doxia.sink.SinkEventAttributeSet;
import org.apache.maven.plugin.MojoExecutionException;
@@ -40,7 +41,6 @@
import org.apache.maven.project.MavenProjectBuilder;
import org.apache.maven.reporting.MavenReportException;
import org.jsoup.HttpStatusException;
-import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
@@ -281,7 +281,7 @@
}
result.setUrl( siteUrl );
- Document doc = Jsoup.connect( siteUrl ).get();
+ Document doc = JsoupRetry.get( siteUrl );
if ( screenShot )
{
driver.get( artifactProject.getUrl() );
diff --git a/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/source/DistCheckSourceReleaseMojo.java b/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/source/DistCheckSourceReleaseMojo.java
index 076930c..0963e5d 100644
--- a/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/source/DistCheckSourceReleaseMojo.java
+++ b/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/source/DistCheckSourceReleaseMojo.java
@@ -28,6 +28,7 @@
import org.apache.maven.dist.tools.AbstractDistCheckMojo;
import org.apache.maven.dist.tools.ConfigurationLineInfo;
+import org.apache.maven.dist.tools.JsoupRetry;
import org.apache.maven.doxia.markup.HtmlMarkup;
import org.apache.maven.doxia.sink.Sink;
import org.apache.maven.doxia.sink.SinkEventAttributeSet;
@@ -35,7 +36,6 @@
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.reporting.MavenReportException;
-import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
@@ -414,13 +414,13 @@
if ( !url.equals( cachedUrl ) )
{
cachedUrl = url;
- cachedDocument = Jsoup.connect( url ).get();
+ cachedDocument = JsoupRetry.get( url );
}
return cachedDocument;
}
else
{
- return Jsoup.connect( url ).get();
+ return JsoupRetry.get( url );
}
}