Skip to content

Commit 3b60b44

Browse files
authored
Merge 8c7856f into f780851
2 parents f780851 + 8c7856f commit 3b60b44

File tree

45 files changed

+1257
-373
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+1257
-373
lines changed

clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/ApiClient.java

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.fasterxml.jackson.core.type.TypeReference;
1212
import java.io.Closeable;
1313
import java.io.IOException;
14+
import java.time.Duration;
1415
import java.util.List;
1516
import java.util.concurrent.CompletableFuture;
1617
import java.util.concurrent.ExecutorService;
@@ -30,7 +31,16 @@ public abstract class ApiClient implements Closeable {
3031
private AuthInterceptor authInterceptor;
3132

3233
/** Constructs a new instance of the {@link ApiClient}. */
33-
protected ApiClient(String appId, String apiKey, String clientName, @Nullable ClientOptions options, List<Host> defaultHosts) {
34+
protected ApiClient(
35+
String appId,
36+
String apiKey,
37+
String clientName,
38+
@Nullable ClientOptions options,
39+
List<Host> defaultHosts,
40+
Duration connectTimeout,
41+
Duration readTimeout,
42+
Duration writeTimeout
43+
) {
3444
if (appId == null || appId.isEmpty()) {
3545
throw new AlgoliaRuntimeException("`appId` is missing.");
3646
}
@@ -41,11 +51,20 @@ protected ApiClient(String appId, String apiKey, String clientName, @Nullable Cl
4151
this.executor = clientOptions.getExecutor();
4252
this.requester = clientOptions.getCustomRequester() != null
4353
? clientOptions.getCustomRequester()
44-
: defaultRequester(appId, apiKey, clientName, clientOptions, defaultHosts);
54+
: defaultRequester(appId, apiKey, clientName, clientOptions, defaultHosts, connectTimeout, readTimeout, writeTimeout);
4555
}
4656

4757
/** Creates a default {@link Requester} for executing API requests. */
48-
private Requester defaultRequester(String appId, String apiKey, String clientName, ClientOptions options, List<Host> defaultHosts) {
58+
private Requester defaultRequester(
59+
String appId,
60+
String apiKey,
61+
String clientName,
62+
ClientOptions options,
63+
List<Host> defaultHosts,
64+
Duration connectTimeout,
65+
Duration readTimeout,
66+
Duration writeTimeout
67+
) {
4968
AlgoliaAgent algoliaAgent = new AlgoliaAgent(BuildConfig.VERSION)
5069
.addSegment(new AlgoliaAgent.Segment(clientName, BuildConfig.VERSION))
5170
.addSegments(options.getAlgoliaAgentSegments());
@@ -58,7 +77,10 @@ private Requester defaultRequester(String appId, String apiKey, String clientNam
5877
HttpRequester.Builder builder = new HttpRequester.Builder(serializer)
5978
.addInterceptor(authInterceptor)
6079
.addInterceptor(new UserAgentInterceptor(algoliaAgent))
61-
.addInterceptor(new RetryStrategy(statefulHosts));
80+
.addInterceptor(new RetryStrategy(statefulHosts))
81+
.setConnectTimeout(connectTimeout)
82+
.setReadTimeout(readTimeout)
83+
.setWriteTimeout(writeTimeout);
6284
if (options.getRequesterConfig() != null) {
6385
options.getRequesterConfig().accept(builder);
6486
}

clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/config/ClientOptions.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,9 @@ public static class Builder {
124124
private final List<AlgoliaAgent.Segment> algoliaAgentSegments = new ArrayList<>();
125125
private final Map<String, String> defaultHeaders = new HashMap<>();
126126
private LogLevel logLevel = LogLevel.NONE;
127-
private Duration connectTimeout = Duration.ofSeconds(2);
128-
private Duration writeTimeout = Duration.ofSeconds(30);
129-
private Duration readTimeout = Duration.ofSeconds(5);
127+
private Duration connectTimeout = Duration.ZERO;
128+
private Duration writeTimeout = Duration.ZERO;
129+
private Duration readTimeout = Duration.ZERO;
130130
private CompressionType compressionType = CompressionType.NONE;
131131

132132
public Builder setRequester(Requester requester) {

clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/internal/HttpRequester.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.fasterxml.jackson.core.type.TypeReference;
1111
import com.fasterxml.jackson.databind.JavaType;
1212
import java.io.IOException;
13+
import java.time.Duration;
1314
import java.util.ArrayList;
1415
import java.util.Collections;
1516
import java.util.List;
@@ -34,9 +35,9 @@ public final class HttpRequester implements Requester {
3435
/** Private constructor initialized using the builder pattern. */
3536
private HttpRequester(Builder builder, ClientConfig config) {
3637
OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder()
37-
.connectTimeout(config.getConnectTimeout())
38-
.readTimeout(config.getReadTimeout())
39-
.writeTimeout(config.getWriteTimeout())
38+
.connectTimeout(config.getConnectTimeout() == Duration.ZERO ? builder.connectTimeout : config.getConnectTimeout())
39+
.readTimeout(config.getReadTimeout() == Duration.ZERO ? builder.readTimeout : config.getReadTimeout())
40+
.writeTimeout(config.getWriteTimeout() == Duration.ZERO ? builder.writeTimeout : config.getWriteTimeout())
4041
.addInterceptor(new HeaderInterceptor(config.getDefaultHeaders()))
4142
.addNetworkInterceptor(new LogInterceptor(config.getLogger(), config.getLogLevel()));
4243
builder.interceptors.forEach(clientBuilder::addInterceptor);
@@ -192,11 +193,11 @@ public void close() throws IOException {
192193
public static class Builder {
193194

194195
private final List<Interceptor> interceptors = new ArrayList<>();
195-
196196
private final List<Interceptor> networkInterceptors = new ArrayList<>();
197-
197+
private Duration connectTimeout = Duration.ofSeconds(2);
198+
private Duration writeTimeout = Duration.ofSeconds(30);
199+
private Duration readTimeout = Duration.ofSeconds(5);
198200
private Consumer<OkHttpClient.Builder> clientConfig;
199-
200201
private final JsonSerializer serializer;
201202

202203
public Builder(JsonSerializer serializer) {
@@ -229,6 +230,21 @@ public Builder setHttpClientConfig(Consumer<OkHttpClient.Builder> config) {
229230
return this;
230231
}
231232

233+
public Builder setConnectTimeout(Duration connectTimeout) {
234+
this.connectTimeout = connectTimeout;
235+
return this;
236+
}
237+
238+
public Builder setWriteTimeout(Duration writeTimeout) {
239+
this.writeTimeout = writeTimeout;
240+
return this;
241+
}
242+
243+
public Builder setReadTimeout(Duration readTimeout) {
244+
this.readTimeout = readTimeout;
245+
return this;
246+
}
247+
232248
/**
233249
* Builds and returns a HttpRequester instance.
234250
*

0 commit comments

Comments
 (0)