From dd0be1549fbca8cc487703f093b61682e695f335 Mon Sep 17 00:00:00 2001 From: algolia-bot Date: Mon, 13 Jan 2025 10:56:51 +0000 Subject: [PATCH] feat(clients): endpoint level timeout part 2 [skip-bc] (generated) https://github.com/algolia/api-clients-automation/pull/4318 Co-authored-by: algolia-bot Co-authored-by: Thomas Raffray Co-authored-by: Pierre Millot --- .../Clients/AbtestingConfiguration.cs | 6 ++-- .../Clients/AnalyticsConfiguration.cs | 6 ++-- algoliasearch/Clients/IngestionClient.cs | 12 ++++++++ .../Clients/IngestionConfiguration.cs | 6 ++-- .../Clients/InsightsConfiguration.cs | 6 ++-- .../Clients/MonitoringConfiguration.cs | 6 ++-- .../Clients/PersonalizationConfiguration.cs | 6 ++-- .../Clients/QuerySuggestionsConfiguration.cs | 6 ++-- .../Clients/RecommendConfiguration.cs | 6 ++-- algoliasearch/Clients/SearchConfiguration.cs | 6 ++-- algoliasearch/Http/InternalRequestOptions.cs | 18 ++++++++++-- algoliasearch/Http/RequestOptionBuilder.cs | 28 +++++++++++++++++-- algoliasearch/Http/RequestOptions.cs | 14 ++++++++-- algoliasearch/Transport/HttpTransport.cs | 11 ++++---- 14 files changed, 97 insertions(+), 40 deletions(-) diff --git a/algoliasearch/Clients/AbtestingConfiguration.cs b/algoliasearch/Clients/AbtestingConfiguration.cs index 972536eb3..fe20d6e3c 100644 --- a/algoliasearch/Clients/AbtestingConfiguration.cs +++ b/algoliasearch/Clients/AbtestingConfiguration.cs @@ -32,9 +32,9 @@ public AbtestingConfig(string appId, string apiKey, string region = null) : base { DefaultHosts = GetDefaultHosts(region); Compression = CompressionType.None; - ReadTimeout = TimeSpan.FromSeconds(5); - WriteTimeout = TimeSpan.FromSeconds(30); - ConnectTimeout = TimeSpan.FromSeconds(2); + ReadTimeout = TimeSpan.FromMilliseconds(5000); + WriteTimeout = TimeSpan.FromMilliseconds(30000); + ConnectTimeout = TimeSpan.FromMilliseconds(2000); } private static List GetDefaultHosts(string region) { diff --git a/algoliasearch/Clients/AnalyticsConfiguration.cs b/algoliasearch/Clients/AnalyticsConfiguration.cs index ce7780d39..fd75155c1 100644 --- a/algoliasearch/Clients/AnalyticsConfiguration.cs +++ b/algoliasearch/Clients/AnalyticsConfiguration.cs @@ -32,9 +32,9 @@ public AnalyticsConfig(string appId, string apiKey, string region = null) : base { DefaultHosts = GetDefaultHosts(region); Compression = CompressionType.None; - ReadTimeout = TimeSpan.FromSeconds(5); - WriteTimeout = TimeSpan.FromSeconds(30); - ConnectTimeout = TimeSpan.FromSeconds(2); + ReadTimeout = TimeSpan.FromMilliseconds(5000); + WriteTimeout = TimeSpan.FromMilliseconds(30000); + ConnectTimeout = TimeSpan.FromMilliseconds(2000); } private static List GetDefaultHosts(string region) { diff --git a/algoliasearch/Clients/IngestionClient.cs b/algoliasearch/Clients/IngestionClient.cs index 619769b68..0818df1db 100644 --- a/algoliasearch/Clients/IngestionClient.cs +++ b/algoliasearch/Clients/IngestionClient.cs @@ -2823,6 +2823,9 @@ public async Task PushTaskAsync(string taskID, PushTaskPayload pu requestOptions.AddQueryParameter("watch", watch); requestOptions.Data = pushTaskPayload; + requestOptions.ReadTimeout ??= TimeSpan.FromMilliseconds(180000); + requestOptions.WriteTimeout ??= TimeSpan.FromMilliseconds(180000); + requestOptions.ConnectTimeout ??= TimeSpan.FromMilliseconds(180000); return await _transport.ExecuteRequestAsync(new HttpMethod("POST"), "/2/tasks/{taskID}/push", requestOptions, cancellationToken).ConfigureAwait(false); } @@ -3024,6 +3027,9 @@ public async Task TriggerDockerSourceDiscoverAsync(string sourceI requestOptions.PathParameters.Add("sourceID", QueryStringHelper.ParameterToString(sourceID)); + requestOptions.ReadTimeout ??= TimeSpan.FromMilliseconds(180000); + requestOptions.WriteTimeout ??= TimeSpan.FromMilliseconds(180000); + requestOptions.ConnectTimeout ??= TimeSpan.FromMilliseconds(180000); return await _transport.ExecuteRequestAsync(new HttpMethod("POST"), "/1/sources/{sourceID}/discover", requestOptions, cancellationToken).ConfigureAwait(false); } @@ -3235,6 +3241,9 @@ public async Task ValidateSourceAsync(SourceCreate sourceCreate = requestOptions.Data = sourceCreate; + requestOptions.ReadTimeout ??= TimeSpan.FromMilliseconds(180000); + requestOptions.WriteTimeout ??= TimeSpan.FromMilliseconds(180000); + requestOptions.ConnectTimeout ??= TimeSpan.FromMilliseconds(180000); return await _transport.ExecuteRequestAsync(new HttpMethod("POST"), "/1/sources/validate", requestOptions, cancellationToken).ConfigureAwait(false); } @@ -3260,6 +3269,9 @@ public async Task ValidateSourceBeforeUpdateAsync(string sourceID requestOptions.PathParameters.Add("sourceID", QueryStringHelper.ParameterToString(sourceID)); requestOptions.Data = sourceUpdate; + requestOptions.ReadTimeout ??= TimeSpan.FromMilliseconds(180000); + requestOptions.WriteTimeout ??= TimeSpan.FromMilliseconds(180000); + requestOptions.ConnectTimeout ??= TimeSpan.FromMilliseconds(180000); return await _transport.ExecuteRequestAsync(new HttpMethod("POST"), "/1/sources/{sourceID}/validate", requestOptions, cancellationToken).ConfigureAwait(false); } diff --git a/algoliasearch/Clients/IngestionConfiguration.cs b/algoliasearch/Clients/IngestionConfiguration.cs index 61c1359d6..b24b43c5c 100644 --- a/algoliasearch/Clients/IngestionConfiguration.cs +++ b/algoliasearch/Clients/IngestionConfiguration.cs @@ -32,9 +32,9 @@ public IngestionConfig(string appId, string apiKey, string region) : base(appId, { DefaultHosts = GetDefaultHosts(region); Compression = CompressionType.None; - ReadTimeout = TimeSpan.FromSeconds(25); - WriteTimeout = TimeSpan.FromSeconds(25); - ConnectTimeout = TimeSpan.FromSeconds(25); + ReadTimeout = TimeSpan.FromMilliseconds(25000); + WriteTimeout = TimeSpan.FromMilliseconds(25000); + ConnectTimeout = TimeSpan.FromMilliseconds(25000); } private static List GetDefaultHosts(string region) { diff --git a/algoliasearch/Clients/InsightsConfiguration.cs b/algoliasearch/Clients/InsightsConfiguration.cs index a94065f22..3a9b36ef8 100644 --- a/algoliasearch/Clients/InsightsConfiguration.cs +++ b/algoliasearch/Clients/InsightsConfiguration.cs @@ -32,9 +32,9 @@ public InsightsConfig(string appId, string apiKey, string region = null) : base( { DefaultHosts = GetDefaultHosts(region); Compression = CompressionType.None; - ReadTimeout = TimeSpan.FromSeconds(5); - WriteTimeout = TimeSpan.FromSeconds(30); - ConnectTimeout = TimeSpan.FromSeconds(2); + ReadTimeout = TimeSpan.FromMilliseconds(5000); + WriteTimeout = TimeSpan.FromMilliseconds(30000); + ConnectTimeout = TimeSpan.FromMilliseconds(2000); } private static List GetDefaultHosts(string region) { diff --git a/algoliasearch/Clients/MonitoringConfiguration.cs b/algoliasearch/Clients/MonitoringConfiguration.cs index 94e7a1640..d859cd4c7 100644 --- a/algoliasearch/Clients/MonitoringConfiguration.cs +++ b/algoliasearch/Clients/MonitoringConfiguration.cs @@ -31,9 +31,9 @@ public MonitoringConfig(string appId, string apiKey) : base(appId, apiKey, "Moni { DefaultHosts = GetDefaultHosts(); Compression = CompressionType.None; - ReadTimeout = TimeSpan.FromSeconds(5); - WriteTimeout = TimeSpan.FromSeconds(30); - ConnectTimeout = TimeSpan.FromSeconds(2); + ReadTimeout = TimeSpan.FromMilliseconds(5000); + WriteTimeout = TimeSpan.FromMilliseconds(30000); + ConnectTimeout = TimeSpan.FromMilliseconds(2000); } private static List GetDefaultHosts() { diff --git a/algoliasearch/Clients/PersonalizationConfiguration.cs b/algoliasearch/Clients/PersonalizationConfiguration.cs index aa948c530..53dd9207b 100644 --- a/algoliasearch/Clients/PersonalizationConfiguration.cs +++ b/algoliasearch/Clients/PersonalizationConfiguration.cs @@ -32,9 +32,9 @@ public PersonalizationConfig(string appId, string apiKey, string region) : base( { DefaultHosts = GetDefaultHosts(region); Compression = CompressionType.None; - ReadTimeout = TimeSpan.FromSeconds(5); - WriteTimeout = TimeSpan.FromSeconds(30); - ConnectTimeout = TimeSpan.FromSeconds(2); + ReadTimeout = TimeSpan.FromMilliseconds(5000); + WriteTimeout = TimeSpan.FromMilliseconds(30000); + ConnectTimeout = TimeSpan.FromMilliseconds(2000); } private static List GetDefaultHosts(string region) { diff --git a/algoliasearch/Clients/QuerySuggestionsConfiguration.cs b/algoliasearch/Clients/QuerySuggestionsConfiguration.cs index 2cc6e30a1..e6a88cbd6 100644 --- a/algoliasearch/Clients/QuerySuggestionsConfiguration.cs +++ b/algoliasearch/Clients/QuerySuggestionsConfiguration.cs @@ -32,9 +32,9 @@ public QuerySuggestionsConfig(string appId, string apiKey, string region) : base { DefaultHosts = GetDefaultHosts(region); Compression = CompressionType.None; - ReadTimeout = TimeSpan.FromSeconds(5); - WriteTimeout = TimeSpan.FromSeconds(30); - ConnectTimeout = TimeSpan.FromSeconds(2); + ReadTimeout = TimeSpan.FromMilliseconds(5000); + WriteTimeout = TimeSpan.FromMilliseconds(30000); + ConnectTimeout = TimeSpan.FromMilliseconds(2000); } private static List GetDefaultHosts(string region) { diff --git a/algoliasearch/Clients/RecommendConfiguration.cs b/algoliasearch/Clients/RecommendConfiguration.cs index f76ac9384..b8cd7480d 100644 --- a/algoliasearch/Clients/RecommendConfiguration.cs +++ b/algoliasearch/Clients/RecommendConfiguration.cs @@ -31,9 +31,9 @@ public RecommendConfig(string appId, string apiKey) : base(appId, apiKey, "Recom { DefaultHosts = GetDefaultHosts(appId); Compression = CompressionType.None; - ReadTimeout = TimeSpan.FromSeconds(5); - WriteTimeout = TimeSpan.FromSeconds(30); - ConnectTimeout = TimeSpan.FromSeconds(2); + ReadTimeout = TimeSpan.FromMilliseconds(5000); + WriteTimeout = TimeSpan.FromMilliseconds(30000); + ConnectTimeout = TimeSpan.FromMilliseconds(2000); } private static List GetDefaultHosts(string appId) { diff --git a/algoliasearch/Clients/SearchConfiguration.cs b/algoliasearch/Clients/SearchConfiguration.cs index e4cb717de..ab8af621b 100644 --- a/algoliasearch/Clients/SearchConfiguration.cs +++ b/algoliasearch/Clients/SearchConfiguration.cs @@ -31,9 +31,9 @@ public SearchConfig(string appId, string apiKey) : base(appId, apiKey, "Search", { DefaultHosts = GetDefaultHosts(appId); Compression = CompressionType.None; - ReadTimeout = TimeSpan.FromSeconds(5); - WriteTimeout = TimeSpan.FromSeconds(30); - ConnectTimeout = TimeSpan.FromSeconds(2); + ReadTimeout = TimeSpan.FromMilliseconds(5000); + WriteTimeout = TimeSpan.FromMilliseconds(30000); + ConnectTimeout = TimeSpan.FromMilliseconds(2000); } private static List GetDefaultHosts(string appId) { diff --git a/algoliasearch/Http/InternalRequestOptions.cs b/algoliasearch/Http/InternalRequestOptions.cs index f457b736c..8d7fcc33c 100644 --- a/algoliasearch/Http/InternalRequestOptions.cs +++ b/algoliasearch/Http/InternalRequestOptions.cs @@ -25,7 +25,9 @@ public InternalRequestOptions(RequestOptions options = null) CustomPathParameters = new Dictionary(); PathParameters = new Dictionary(); - Timeout = options?.Timeout; + ConnectTimeout = options?.ConnectTimeout; + ReadTimeout = options?.ReadTimeout; + WriteTimeout = options?.WriteTimeout; } public void AddQueryParameter(string key, object value) @@ -76,9 +78,19 @@ public void AddCustomQueryParameters(IDictionary values) public object Data { get; set; } /// - /// Request timeout + /// Request read timeout /// - public TimeSpan? Timeout { get; set; } + public TimeSpan? ReadTimeout { get; set; } + + /// + /// Request write timeout + /// + public TimeSpan? WriteTimeout { get; set; } + + /// + /// Request connect timeout + /// + public TimeSpan? ConnectTimeout { get; set; } /// /// Enforce the Read Transporter diff --git a/algoliasearch/Http/RequestOptionBuilder.cs b/algoliasearch/Http/RequestOptionBuilder.cs index b9f701400..6942e27f3 100644 --- a/algoliasearch/Http/RequestOptionBuilder.cs +++ b/algoliasearch/Http/RequestOptionBuilder.cs @@ -47,13 +47,35 @@ public RequestOptionBuilder AddExtraQueryParameters(string key, object value) } /// - /// Set the request timeout + /// Set the request read timeout /// /// /// - public RequestOptionBuilder SetTimeout(TimeSpan timeout) + public RequestOptionBuilder SetReadTimeout(TimeSpan timeout) { - _options.Timeout = timeout; + _options.ReadTimeout = timeout; + return this; + } + + /// + /// Set the request write timeout + /// + /// + /// + public RequestOptionBuilder SetWriteTimeout(TimeSpan timeout) + { + _options.WriteTimeout = timeout; + return this; + } + + /// + /// Set the request connect timeout + /// + /// + /// + public RequestOptionBuilder SetConnectTimeout(TimeSpan timeout) + { + _options.ConnectTimeout = timeout; return this; } diff --git a/algoliasearch/Http/RequestOptions.cs b/algoliasearch/Http/RequestOptions.cs index b53980546..3f74e5dbf 100644 --- a/algoliasearch/Http/RequestOptions.cs +++ b/algoliasearch/Http/RequestOptions.cs @@ -20,9 +20,19 @@ public class RequestOptions public IDictionary QueryParameters { get; set; } /// - /// Request timeout in seconds + /// Request timeout /// - public TimeSpan? Timeout { get; set; } + public TimeSpan? ReadTimeout { get; set; } + + /// + /// Request timeout + /// + public TimeSpan? WriteTimeout { get; set; } + + /// + /// Request timeout + /// + public TimeSpan? ConnectTimeout { get; set; } /// /// Constructs a new instance of diff --git a/algoliasearch/Transport/HttpTransport.cs b/algoliasearch/Transport/HttpTransport.cs index 213720dd9..63c0957cf 100644 --- a/algoliasearch/Transport/HttpTransport.cs +++ b/algoliasearch/Transport/HttpTransport.cs @@ -119,7 +119,7 @@ private async Task ExecuteRequestAsync(HttpMethod metho request.Uri = BuildUri(host, uri, requestOptions?.CustomPathParameters, requestOptions?.PathParameters, requestOptions?.QueryParameters); var requestTimeout = - TimeSpan.FromTicks((requestOptions?.Timeout ?? GetTimeOut(callType)).Ticks * (host.RetryCount + 1)); + TimeSpan.FromTicks((GetTimeOut(callType, requestOptions)).Ticks * (host.RetryCount + 1)); if (request.Body == null && (method == HttpMethod.Post || method == HttpMethod.Put)) { @@ -137,7 +137,7 @@ private async Task ExecuteRequestAsync(HttpMethod metho } var response = await _httpClient - .SendRequestAsync(request, requestTimeout, _algoliaConfig.ConnectTimeout ?? Defaults.ConnectTimeout, ct) + .SendRequestAsync(request, requestTimeout, requestOptions?.ConnectTimeout ?? _algoliaConfig.ConnectTimeout ?? Defaults.ConnectTimeout, ct) .ConfigureAwait(false); _errorMessage = response.Error; @@ -280,13 +280,14 @@ private static Uri BuildUri(StatefulHost host, string baseUri, /// Compute the request timeout with the given call type and configuration /// /// + /// /// - private TimeSpan GetTimeOut(CallType callType) + private TimeSpan GetTimeOut(CallType callType, InternalRequestOptions requestOptions = null) { return callType switch { - CallType.Read => _algoliaConfig.ReadTimeout ?? Defaults.ReadTimeout, - CallType.Write => _algoliaConfig.WriteTimeout ?? Defaults.WriteTimeout, + CallType.Read => requestOptions?.ReadTimeout ?? _algoliaConfig.ReadTimeout ?? Defaults.ReadTimeout, + CallType.Write => requestOptions?.WriteTimeout ?? _algoliaConfig.WriteTimeout ?? Defaults.WriteTimeout, _ => Defaults.WriteTimeout }; }