18273: Increase default java sdk timeouts & make them configuable
[arvados.git] / sdk / java-v2 / src / main / java / org / arvados / client / config / ExternalConfigProvider.java
index 17e06966fa80daf9713c03e026093f03550bf75e..d592b23ac34e81f13f12f5250736e7de529fd112 100644 (file)
@@ -22,8 +22,35 @@ public class ExternalConfigProvider implements ConfigProvider {
     private File fileSplitDirectory;
     private int numberOfCopies;
     private int numberOfRetries;
+    private int connectTimeout;
+    private int readTimeout;
+    private int writeTimeout;
+
+    ExternalConfigProvider(boolean apiHostInsecure, String keepWebHost, int keepWebPort, String apiHost, int apiPort,
+                          String apiToken, String apiProtocol, int fileSplitSize, File fileSplitDirectory,
+                          int numberOfCopies, int numberOfRetries)
+    {
+        this.apiHostInsecure = apiHostInsecure;
+        this.keepWebHost = keepWebHost;
+        this.keepWebPort = keepWebPort;
+        this.apiHost = apiHost;
+        this.apiPort = apiPort;
+        this.apiToken = apiToken;
+        this.apiProtocol = apiProtocol;
+        this.fileSplitSize = fileSplitSize;
+        this.fileSplitDirectory = fileSplitDirectory;
+        this.numberOfCopies = numberOfCopies;
+        this.numberOfRetries = numberOfRetries;
+       this.connectTimeout = 60000;
+       this.readTimeout = 60000;
+       this.writeTimeout = 60000;
+    }
 
-    ExternalConfigProvider(boolean apiHostInsecure, String keepWebHost, int keepWebPort, String apiHost, int apiPort, String apiToken, String apiProtocol, int fileSplitSize, File fileSplitDirectory, int numberOfCopies, int numberOfRetries) {
+    ExternalConfigProvider(boolean apiHostInsecure, String keepWebHost, int keepWebPort, String apiHost, int apiPort,
+                          String apiToken, String apiProtocol, int fileSplitSize, File fileSplitDirectory,
+                          int numberOfCopies, int numberOfRetries,
+                          int connectTimeout, int readTimeout, int writeTimeout)
+    {
         this.apiHostInsecure = apiHostInsecure;
         this.keepWebHost = keepWebHost;
         this.keepWebPort = keepWebPort;
@@ -35,6 +62,9 @@ public class ExternalConfigProvider implements ConfigProvider {
         this.fileSplitDirectory = fileSplitDirectory;
         this.numberOfCopies = numberOfCopies;
         this.numberOfRetries = numberOfRetries;
+       this.connectTimeout = connectTimeout;
+       this.readTimeout = readTimeout;
+       this.writeTimeout = writeTimeout;
     }
 
     public static ExternalConfigProviderBuilder builder() {
@@ -102,6 +132,18 @@ public class ExternalConfigProvider implements ConfigProvider {
         return this.numberOfRetries;
     }
 
+    public int getConnectTimeout() {
+        return this.connectTimeout;
+    }
+
+    public int getReadTimeout() {
+        return this.readTimeout;
+    }
+
+    public int getWriteTimeout() {
+        return this.writeTimeout;
+    }
+
     public static class ExternalConfigProviderBuilder {
         private boolean apiHostInsecure;
         private String keepWebHost;