Mailing List Archive

[MediaWiki-commits] [Gerrit] wikidata...rdf[master]: Add timeout to Wikibase requests
Smalyshev has uploaded a new change for review. ( 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, 25 insertions(+), 1 deletion(-)


git pull ssh://gerrit.wikimedia.org:29418/wikidata/query/rdf refs/changes/25/405825/1

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..b05dd51 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;
@@ -78,6 +79,14 @@
public class WikibaseRepository implements Closeable {
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.
*/
@@ -236,8 +245,10 @@
throws RetryableException {
URI uri = uris.recentChanges(nextStartTime, lastContinue, batchSize);
log.debug("Polling for changes from {}", uri);
+ HttpGet request = new HttpGet(uri);
+ request.setConfig(getRequestConfig());
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);
@@ -247,6 +258,18 @@
} catch (IOException e) {
throw new RetryableException("Error fetching recent changes", e);
}
+ }
+
+ /**
+ * Get request configuration.
+ * @return request configuration
+ */
+ private RequestConfig getRequestConfig() {
+ int timeout = Integer.parseInt(System.getProperty(TIMEOUT_PROPERTY, TIMEOUT_MILLIS));
+ return RequestConfig.custom()
+ .setSocketTimeout(timeout)
+ .setConnectTimeout(timeout)
+ .setConnectionRequestTimeout(timeout).build();
}

/**
@@ -264,6 +287,7 @@
StatementCollector collector = new StatementCollector();
parser.setRDFHandler(new NormalizingRdfHandler(collector));
HttpGet request = new HttpGet(uri);
+ request.setConfig(getRequestConfig());
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: newchange
Gerrit-Change-Id: Ib027a457a10a268ed365b11390cf03308bcb7b84
Gerrit-PatchSet: 1
Gerrit-Project: wikidata/query/rdf
Gerrit-Branch: master
Gerrit-Owner: Smalyshev <smalyshev@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] wikidata...rdf[master]: Add timeout to Wikibase requests [ In reply to ]
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 <smalyshev@wikimedia.org>
Gerrit-Reviewer: Gehel <guillaume.lederrey@wikimedia.org>
Gerrit-Reviewer: Smalyshev <smalyshev@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

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