Skip to content

Commit dd0be15

Browse files
algolia-botFluf22millotp
committed
feat(clients): endpoint level timeout part 2 [skip-bc] (generated)
algolia/api-clients-automation#4318 Co-authored-by: algolia-bot <[email protected]> Co-authored-by: Thomas Raffray <[email protected]> Co-authored-by: Pierre Millot <[email protected]>
1 parent e20d6bb commit dd0be15

14 files changed

+97
-40
lines changed

algoliasearch/Clients/AbtestingConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ public AbtestingConfig(string appId, string apiKey, string region = null) : base
3232
{
3333
DefaultHosts = GetDefaultHosts(region);
3434
Compression = CompressionType.None;
35-
ReadTimeout = TimeSpan.FromSeconds(5);
36-
WriteTimeout = TimeSpan.FromSeconds(30);
37-
ConnectTimeout = TimeSpan.FromSeconds(2);
35+
ReadTimeout = TimeSpan.FromMilliseconds(5000);
36+
WriteTimeout = TimeSpan.FromMilliseconds(30000);
37+
ConnectTimeout = TimeSpan.FromMilliseconds(2000);
3838
}
3939
private static List<StatefulHost> GetDefaultHosts(string region)
4040
{

algoliasearch/Clients/AnalyticsConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ public AnalyticsConfig(string appId, string apiKey, string region = null) : base
3232
{
3333
DefaultHosts = GetDefaultHosts(region);
3434
Compression = CompressionType.None;
35-
ReadTimeout = TimeSpan.FromSeconds(5);
36-
WriteTimeout = TimeSpan.FromSeconds(30);
37-
ConnectTimeout = TimeSpan.FromSeconds(2);
35+
ReadTimeout = TimeSpan.FromMilliseconds(5000);
36+
WriteTimeout = TimeSpan.FromMilliseconds(30000);
37+
ConnectTimeout = TimeSpan.FromMilliseconds(2000);
3838
}
3939
private static List<StatefulHost> GetDefaultHosts(string region)
4040
{

algoliasearch/Clients/IngestionClient.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2823,6 +2823,9 @@ public async Task<WatchResponse> PushTaskAsync(string taskID, PushTaskPayload pu
28232823

28242824
requestOptions.AddQueryParameter("watch", watch);
28252825
requestOptions.Data = pushTaskPayload;
2826+
requestOptions.ReadTimeout ??= TimeSpan.FromMilliseconds(180000);
2827+
requestOptions.WriteTimeout ??= TimeSpan.FromMilliseconds(180000);
2828+
requestOptions.ConnectTimeout ??= TimeSpan.FromMilliseconds(180000);
28262829
return await _transport.ExecuteRequestAsync<WatchResponse>(new HttpMethod("POST"), "/2/tasks/{taskID}/push", requestOptions, cancellationToken).ConfigureAwait(false);
28272830
}
28282831

@@ -3024,6 +3027,9 @@ public async Task<WatchResponse> TriggerDockerSourceDiscoverAsync(string sourceI
30243027

30253028
requestOptions.PathParameters.Add("sourceID", QueryStringHelper.ParameterToString(sourceID));
30263029

3030+
requestOptions.ReadTimeout ??= TimeSpan.FromMilliseconds(180000);
3031+
requestOptions.WriteTimeout ??= TimeSpan.FromMilliseconds(180000);
3032+
requestOptions.ConnectTimeout ??= TimeSpan.FromMilliseconds(180000);
30273033
return await _transport.ExecuteRequestAsync<WatchResponse>(new HttpMethod("POST"), "/1/sources/{sourceID}/discover", requestOptions, cancellationToken).ConfigureAwait(false);
30283034
}
30293035

@@ -3235,6 +3241,9 @@ public async Task<WatchResponse> ValidateSourceAsync(SourceCreate sourceCreate =
32353241

32363242

32373243
requestOptions.Data = sourceCreate;
3244+
requestOptions.ReadTimeout ??= TimeSpan.FromMilliseconds(180000);
3245+
requestOptions.WriteTimeout ??= TimeSpan.FromMilliseconds(180000);
3246+
requestOptions.ConnectTimeout ??= TimeSpan.FromMilliseconds(180000);
32383247
return await _transport.ExecuteRequestAsync<WatchResponse>(new HttpMethod("POST"), "/1/sources/validate", requestOptions, cancellationToken).ConfigureAwait(false);
32393248
}
32403249

@@ -3260,6 +3269,9 @@ public async Task<WatchResponse> ValidateSourceBeforeUpdateAsync(string sourceID
32603269
requestOptions.PathParameters.Add("sourceID", QueryStringHelper.ParameterToString(sourceID));
32613270

32623271
requestOptions.Data = sourceUpdate;
3272+
requestOptions.ReadTimeout ??= TimeSpan.FromMilliseconds(180000);
3273+
requestOptions.WriteTimeout ??= TimeSpan.FromMilliseconds(180000);
3274+
requestOptions.ConnectTimeout ??= TimeSpan.FromMilliseconds(180000);
32633275
return await _transport.ExecuteRequestAsync<WatchResponse>(new HttpMethod("POST"), "/1/sources/{sourceID}/validate", requestOptions, cancellationToken).ConfigureAwait(false);
32643276
}
32653277

algoliasearch/Clients/IngestionConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ public IngestionConfig(string appId, string apiKey, string region) : base(appId,
3232
{
3333
DefaultHosts = GetDefaultHosts(region);
3434
Compression = CompressionType.None;
35-
ReadTimeout = TimeSpan.FromSeconds(25);
36-
WriteTimeout = TimeSpan.FromSeconds(25);
37-
ConnectTimeout = TimeSpan.FromSeconds(25);
35+
ReadTimeout = TimeSpan.FromMilliseconds(25000);
36+
WriteTimeout = TimeSpan.FromMilliseconds(25000);
37+
ConnectTimeout = TimeSpan.FromMilliseconds(25000);
3838
}
3939
private static List<StatefulHost> GetDefaultHosts(string region)
4040
{

algoliasearch/Clients/InsightsConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ public InsightsConfig(string appId, string apiKey, string region = null) : base(
3232
{
3333
DefaultHosts = GetDefaultHosts(region);
3434
Compression = CompressionType.None;
35-
ReadTimeout = TimeSpan.FromSeconds(5);
36-
WriteTimeout = TimeSpan.FromSeconds(30);
37-
ConnectTimeout = TimeSpan.FromSeconds(2);
35+
ReadTimeout = TimeSpan.FromMilliseconds(5000);
36+
WriteTimeout = TimeSpan.FromMilliseconds(30000);
37+
ConnectTimeout = TimeSpan.FromMilliseconds(2000);
3838
}
3939
private static List<StatefulHost> GetDefaultHosts(string region)
4040
{

algoliasearch/Clients/MonitoringConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ public MonitoringConfig(string appId, string apiKey) : base(appId, apiKey, "Moni
3131
{
3232
DefaultHosts = GetDefaultHosts();
3333
Compression = CompressionType.None;
34-
ReadTimeout = TimeSpan.FromSeconds(5);
35-
WriteTimeout = TimeSpan.FromSeconds(30);
36-
ConnectTimeout = TimeSpan.FromSeconds(2);
34+
ReadTimeout = TimeSpan.FromMilliseconds(5000);
35+
WriteTimeout = TimeSpan.FromMilliseconds(30000);
36+
ConnectTimeout = TimeSpan.FromMilliseconds(2000);
3737
}
3838
private static List<StatefulHost> GetDefaultHosts()
3939
{

algoliasearch/Clients/PersonalizationConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ public PersonalizationConfig(string appId, string apiKey, string region) : base(
3232
{
3333
DefaultHosts = GetDefaultHosts(region);
3434
Compression = CompressionType.None;
35-
ReadTimeout = TimeSpan.FromSeconds(5);
36-
WriteTimeout = TimeSpan.FromSeconds(30);
37-
ConnectTimeout = TimeSpan.FromSeconds(2);
35+
ReadTimeout = TimeSpan.FromMilliseconds(5000);
36+
WriteTimeout = TimeSpan.FromMilliseconds(30000);
37+
ConnectTimeout = TimeSpan.FromMilliseconds(2000);
3838
}
3939
private static List<StatefulHost> GetDefaultHosts(string region)
4040
{

algoliasearch/Clients/QuerySuggestionsConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ public QuerySuggestionsConfig(string appId, string apiKey, string region) : base
3232
{
3333
DefaultHosts = GetDefaultHosts(region);
3434
Compression = CompressionType.None;
35-
ReadTimeout = TimeSpan.FromSeconds(5);
36-
WriteTimeout = TimeSpan.FromSeconds(30);
37-
ConnectTimeout = TimeSpan.FromSeconds(2);
35+
ReadTimeout = TimeSpan.FromMilliseconds(5000);
36+
WriteTimeout = TimeSpan.FromMilliseconds(30000);
37+
ConnectTimeout = TimeSpan.FromMilliseconds(2000);
3838
}
3939
private static List<StatefulHost> GetDefaultHosts(string region)
4040
{

algoliasearch/Clients/RecommendConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ public RecommendConfig(string appId, string apiKey) : base(appId, apiKey, "Recom
3131
{
3232
DefaultHosts = GetDefaultHosts(appId);
3333
Compression = CompressionType.None;
34-
ReadTimeout = TimeSpan.FromSeconds(5);
35-
WriteTimeout = TimeSpan.FromSeconds(30);
36-
ConnectTimeout = TimeSpan.FromSeconds(2);
34+
ReadTimeout = TimeSpan.FromMilliseconds(5000);
35+
WriteTimeout = TimeSpan.FromMilliseconds(30000);
36+
ConnectTimeout = TimeSpan.FromMilliseconds(2000);
3737
}
3838
private static List<StatefulHost> GetDefaultHosts(string appId)
3939
{

algoliasearch/Clients/SearchConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ public SearchConfig(string appId, string apiKey) : base(appId, apiKey, "Search",
3131
{
3232
DefaultHosts = GetDefaultHosts(appId);
3333
Compression = CompressionType.None;
34-
ReadTimeout = TimeSpan.FromSeconds(5);
35-
WriteTimeout = TimeSpan.FromSeconds(30);
36-
ConnectTimeout = TimeSpan.FromSeconds(2);
34+
ReadTimeout = TimeSpan.FromMilliseconds(5000);
35+
WriteTimeout = TimeSpan.FromMilliseconds(30000);
36+
ConnectTimeout = TimeSpan.FromMilliseconds(2000);
3737
}
3838
private static List<StatefulHost> GetDefaultHosts(string appId)
3939
{

algoliasearch/Http/InternalRequestOptions.cs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ public InternalRequestOptions(RequestOptions options = null)
2525

2626
CustomPathParameters = new Dictionary<string, string>();
2727
PathParameters = new Dictionary<string, string>();
28-
Timeout = options?.Timeout;
28+
ConnectTimeout = options?.ConnectTimeout;
29+
ReadTimeout = options?.ReadTimeout;
30+
WriteTimeout = options?.WriteTimeout;
2931
}
3032

3133
public void AddQueryParameter(string key, object value)
@@ -76,9 +78,19 @@ public void AddCustomQueryParameters(IDictionary<string, object> values)
7678
public object Data { get; set; }
7779

7880
/// <summary>
79-
/// Request timeout
81+
/// Request read timeout
8082
/// </summary>
81-
public TimeSpan? Timeout { get; set; }
83+
public TimeSpan? ReadTimeout { get; set; }
84+
85+
/// <summary>
86+
/// Request write timeout
87+
/// </summary>
88+
public TimeSpan? WriteTimeout { get; set; }
89+
90+
/// <summary>
91+
/// Request connect timeout
92+
/// </summary>
93+
public TimeSpan? ConnectTimeout { get; set; }
8294

8395
/// <summary>
8496
/// Enforce the Read Transporter

algoliasearch/Http/RequestOptionBuilder.cs

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,35 @@ public RequestOptionBuilder AddExtraQueryParameters(string key, object value)
4747
}
4848

4949
/// <summary>
50-
/// Set the request timeout
50+
/// Set the request read timeout
5151
/// </summary>
5252
/// <param name="timeout"></param>
5353
/// <returns></returns>
54-
public RequestOptionBuilder SetTimeout(TimeSpan timeout)
54+
public RequestOptionBuilder SetReadTimeout(TimeSpan timeout)
5555
{
56-
_options.Timeout = timeout;
56+
_options.ReadTimeout = timeout;
57+
return this;
58+
}
59+
60+
/// <summary>
61+
/// Set the request write timeout
62+
/// </summary>
63+
/// <param name="timeout"></param>
64+
/// <returns></returns>
65+
public RequestOptionBuilder SetWriteTimeout(TimeSpan timeout)
66+
{
67+
_options.WriteTimeout = timeout;
68+
return this;
69+
}
70+
71+
/// <summary>
72+
/// Set the request connect timeout
73+
/// </summary>
74+
/// <param name="timeout"></param>
75+
/// <returns></returns>
76+
public RequestOptionBuilder SetConnectTimeout(TimeSpan timeout)
77+
{
78+
_options.ConnectTimeout = timeout;
5779
return this;
5880
}
5981

algoliasearch/Http/RequestOptions.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,19 @@ public class RequestOptions
2020
public IDictionary<string, object> QueryParameters { get; set; }
2121

2222
/// <summary>
23-
/// Request timeout in seconds
23+
/// Request timeout
2424
/// </summary>
25-
public TimeSpan? Timeout { get; set; }
25+
public TimeSpan? ReadTimeout { get; set; }
26+
27+
/// <summary>
28+
/// Request timeout
29+
/// </summary>
30+
public TimeSpan? WriteTimeout { get; set; }
31+
32+
/// <summary>
33+
/// Request timeout
34+
/// </summary>
35+
public TimeSpan? ConnectTimeout { get; set; }
2636

2737
/// <summary>
2838
/// Constructs a new instance of <see cref="RequestOptions"/>

algoliasearch/Transport/HttpTransport.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ private async Task<TResult> ExecuteRequestAsync<TResult, TData>(HttpMethod metho
119119
request.Uri = BuildUri(host, uri, requestOptions?.CustomPathParameters, requestOptions?.PathParameters,
120120
requestOptions?.QueryParameters);
121121
var requestTimeout =
122-
TimeSpan.FromTicks((requestOptions?.Timeout ?? GetTimeOut(callType)).Ticks * (host.RetryCount + 1));
122+
TimeSpan.FromTicks((GetTimeOut(callType, requestOptions)).Ticks * (host.RetryCount + 1));
123123

124124
if (request.Body == null && (method == HttpMethod.Post || method == HttpMethod.Put))
125125
{
@@ -137,7 +137,7 @@ private async Task<TResult> ExecuteRequestAsync<TResult, TData>(HttpMethod metho
137137
}
138138

139139
var response = await _httpClient
140-
.SendRequestAsync(request, requestTimeout, _algoliaConfig.ConnectTimeout ?? Defaults.ConnectTimeout, ct)
140+
.SendRequestAsync(request, requestTimeout, requestOptions?.ConnectTimeout ?? _algoliaConfig.ConnectTimeout ?? Defaults.ConnectTimeout, ct)
141141
.ConfigureAwait(false);
142142

143143
_errorMessage = response.Error;
@@ -280,13 +280,14 @@ private static Uri BuildUri(StatefulHost host, string baseUri,
280280
/// Compute the request timeout with the given call type and configuration
281281
/// </summary>
282282
/// <param name="callType"></param>
283+
/// <param name="requestOptions"></param>
283284
/// <returns></returns>
284-
private TimeSpan GetTimeOut(CallType callType)
285+
private TimeSpan GetTimeOut(CallType callType, InternalRequestOptions requestOptions = null)
285286
{
286287
return callType switch
287288
{
288-
CallType.Read => _algoliaConfig.ReadTimeout ?? Defaults.ReadTimeout,
289-
CallType.Write => _algoliaConfig.WriteTimeout ?? Defaults.WriteTimeout,
289+
CallType.Read => requestOptions?.ReadTimeout ?? _algoliaConfig.ReadTimeout ?? Defaults.ReadTimeout,
290+
CallType.Write => requestOptions?.WriteTimeout ?? _algoliaConfig.WriteTimeout ?? Defaults.WriteTimeout,
290291
_ => Defaults.WriteTimeout
291292
};
292293
}

0 commit comments

Comments
 (0)