diff options
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/remote/SimpleBlobStoreFactory.java | 4 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/remote/blobstore/RestBlobStore.java | 9 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/remote/SimpleBlobStoreFactory.java b/src/main/java/com/google/devtools/build/lib/remote/SimpleBlobStoreFactory.java index e9ffe2aa5a..15b600048e 100644 --- a/src/main/java/com/google/devtools/build/lib/remote/SimpleBlobStoreFactory.java +++ b/src/main/java/com/google/devtools/build/lib/remote/SimpleBlobStoreFactory.java @@ -21,6 +21,7 @@ import com.google.devtools.build.lib.remote.blobstore.RestBlobStore; import com.google.devtools.build.lib.remote.blobstore.SimpleBlobStore; import com.google.devtools.build.lib.vfs.Path; import java.io.IOException; +import java.util.concurrent.TimeUnit; import javax.annotation.Nullable; /** @@ -32,7 +33,8 @@ public final class SimpleBlobStoreFactory { private SimpleBlobStoreFactory() {} public static SimpleBlobStore createRest(RemoteOptions options) throws IOException { - return new RestBlobStore(options.remoteRestCache, options.restCachePoolSize); + return new RestBlobStore(options.remoteRestCache, options.restCachePoolSize, + (int) TimeUnit.SECONDS.toMillis(options.remoteTimeout)); } public static SimpleBlobStore createLocalDisk(RemoteOptions options, Path workingDirectory) diff --git a/src/main/java/com/google/devtools/build/lib/remote/blobstore/RestBlobStore.java b/src/main/java/com/google/devtools/build/lib/remote/blobstore/RestBlobStore.java index 43b90a5eda..e6f56971b0 100644 --- a/src/main/java/com/google/devtools/build/lib/remote/blobstore/RestBlobStore.java +++ b/src/main/java/com/google/devtools/build/lib/remote/blobstore/RestBlobStore.java @@ -21,6 +21,7 @@ import java.net.URISyntaxException; import org.apache.http.HttpEntity; import org.apache.http.HttpStatus; import org.apache.http.client.HttpClient; +import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpHead; import org.apache.http.client.methods.HttpPut; @@ -60,7 +61,7 @@ public final class RestBlobStore implements SimpleBlobStore { * @param baseUrl base URL for the remote cache * @param poolSize maximum number of simultaneous connections */ - public RestBlobStore(String baseUrl, int poolSize) throws IOException { + public RestBlobStore(String baseUrl, int poolSize, int timeoutMillis) throws IOException { validateUrl(baseUrl); this.baseUrl = baseUrl; connMan = new PoolingHttpClientConnectionManager(); @@ -69,6 +70,12 @@ public final class RestBlobStore implements SimpleBlobStore { clientFactory = HttpClientBuilder.create(); clientFactory.setConnectionManager(connMan); clientFactory.setConnectionManagerShared(true); + clientFactory.setDefaultRequestConfig(RequestConfig.custom() + // Timeout to establish a connection. + .setConnectTimeout(timeoutMillis) + // Timeout between reading data. + .setSocketTimeout(timeoutMillis) + .build()); } @Override |