jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/405825 )

Change subject: Add timeout to Wikibase requests
......................................................................


Add timeout to Wikibase requests

Bug: T179239
Change-Id: Ib027a457a10a268ed365b11390cf03308bcb7b84
---
M 
tools/src/main/java/org/wikidata/query/rdf/tool/wikibase/WikibaseRepository.java
1 file changed, 26 insertions(+), 1 deletion(-)

Approvals:
  Smalyshev: Looks good to me, approved
  jenkins-bot: Verified
  Gehel: Looks good to me, but someone else must approve



diff --git 
a/tools/src/main/java/org/wikidata/query/rdf/tool/wikibase/WikibaseRepository.java
 
b/tools/src/main/java/org/wikidata/query/rdf/tool/wikibase/WikibaseRepository.java
index b7d3e16..ae1a703 100644
--- 
a/tools/src/main/java/org/wikidata/query/rdf/tool/wikibase/WikibaseRepository.java
+++ 
b/tools/src/main/java/org/wikidata/query/rdf/tool/wikibase/WikibaseRepository.java
@@ -30,6 +30,7 @@
 import org.apache.http.NameValuePair;
 import org.apache.http.client.HttpRequestRetryHandler;
 import org.apache.http.client.ServiceUnavailableRetryStrategy;
+import org.apache.http.client.config.RequestConfig;
 import org.apache.http.client.entity.UrlEncodedFormEntity;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpGet;
@@ -79,6 +80,14 @@
     private static final Logger log = 
LoggerFactory.getLogger(WikibaseRepository.class);
 
     /**
+     * Timeout for communications to Wikidata, in ms.
+     */
+    private static final String TIMEOUT_MILLIS = "5000";
+    /**
+     * Request timeout property.
+     */
+    public static final String TIMEOUT_PROPERTY = WikibaseRepository.class + 
".timeout";
+    /**
      * How many retries allowed on error.
      */
     private static final int RETRIES = 3;
@@ -104,6 +113,19 @@
             .setUserAgent("Wikidata Query Service Updater")
             .build();
 
+    /**
+     * Configured timeout for requests.
+     */
+    private final int requestTimeout = Integer
+            .parseInt(System.getProperty(TIMEOUT_PROPERTY, TIMEOUT_MILLIS));
+
+    /**
+     * Request configuration including timeout.
+     */
+    private final RequestConfig configWithTimeout = RequestConfig.custom()
+            .setSocketTimeout(requestTimeout)
+            .setConnectTimeout(requestTimeout)
+            .setConnectionRequestTimeout(requestTimeout).build();
     /**
      * Builds uris to get stuff from wikibase.
      */
@@ -236,8 +258,10 @@
             throws RetryableException {
         URI uri = uris.recentChanges(nextStartTime, lastContinue, batchSize);
         log.debug("Polling for changes from {}", uri);
+        HttpGet request = new HttpGet(uri);
+        request.setConfig(configWithTimeout);
         try {
-            return checkApi(getJson(new HttpGet(uri), 
RecentChangeResponse.class));
+            return checkApi(getJson(request, RecentChangeResponse.class));
         } catch (UnknownHostException | SocketException e) {
             // We want to bail on this, since it happens to be sticky for some 
reason
             throw new RuntimeException(e);
@@ -264,6 +288,7 @@
         StatementCollector collector = new StatementCollector();
         parser.setRDFHandler(new NormalizingRdfHandler(collector));
         HttpGet request = new HttpGet(uri);
+        request.setConfig(configWithTimeout);
         try {
             try (CloseableHttpResponse response = client.execute(request)) {
                 if (response.getStatusLine().getStatusCode() == 404) {

-- 
To view, visit https://gerrit.wikimedia.org/r/405825
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ib027a457a10a268ed365b11390cf03308bcb7b84
Gerrit-PatchSet: 2
Gerrit-Project: wikidata/query/rdf
Gerrit-Branch: master
Gerrit-Owner: Smalyshev <smalys...@wikimedia.org>
Gerrit-Reviewer: Gehel <guillaume.leder...@wikimedia.org>
Gerrit-Reviewer: Smalyshev <smalys...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to