From e45852a59548809ea8e56ca29863bc66a0add7e6 Mon Sep 17 00:00:00 2001 From: Ernest Zaslavsky Date: Tue, 8 Jul 2025 09:55:19 +0300 Subject: [PATCH] s3_client: Disable Seastar-level retries in HTTP client creation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prevent Seastar from retrying HTTP requests to avoid buffer double-feed issues when an entire request is retried. This could cause data corruption in `chunked_download_source`. The change is global for every instance of `s3_client`, but it is still safe because: * Seastar's `http_client` resets connections regardless of retry behavior * `s3_client` retry logic handles all error types—exceptions, HTTP errors, and AWS-specific errors—via `http_retryable_client` (cherry picked from commit fc2c9dd29053f7240db1189e0b7533b4a6e25d4b) --- utils/s3/client.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/s3/client.cc b/utils/s3/client.cc index b668605561..5201f3d547 100644 --- a/utils/s3/client.cc +++ b/utils/s3/client.cc @@ -204,7 +204,7 @@ future> client::claim_memory(size_t size) { } client::group_client::group_client(std::unique_ptr f, unsigned max_conn, const aws::retry_strategy& retry_strategy) - : retryable_client(std::move(f), max_conn, map_s3_client_exception, http::experimental::client::retry_requests::yes, retry_strategy) { + : retryable_client(std::move(f), max_conn, map_s3_client_exception, http::experimental::client::retry_requests::no, retry_strategy) { } void client::group_client::register_metrics(std::string class_name, std::string host) {