Skip to content

Commit 9b5c295

Browse files
committed
disable hedging for s3 express
1 parent 4782ecb commit 9b5c295

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

source/s3_auto_ranged_put.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -464,8 +464,11 @@ static void s_s3_auto_ranged_put_send_request_finish(
464464
struct aws_http_stream *stream,
465465
int error_code) {
466466
struct aws_s3_request *request = connection->request;
467-
if (request->request_tag == AWS_S3_AUTO_RANGED_PUT_REQUEST_TAG_PART) {
467+
if (request->request_tag == AWS_S3_AUTO_RANGED_PUT_REQUEST_TAG_PART && !request->meta_request->is_express) {
468468
/* TODO: the single part upload may also be improved from a timeout as multipart. */
469+
/* Note: For S3express, server responses random ETag. Killing the connection in the middle may cause server
470+
* receive two same part and result in confusing during complete MPU with etag doesn't match.
471+
* Disable the first byte timeout for s3 express. */
469472
aws_s3_client_update_upload_part_timeout(request->meta_request->client, request, error_code);
470473
}
471474
aws_s3_meta_request_send_request_finish_default(connection, stream, error_code);

source/s3_meta_request.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1188,7 +1188,10 @@ void aws_s3_meta_request_send_request(struct aws_s3_meta_request *meta_request,
11881188
options.on_metrics = s_s3_meta_request_stream_metrics;
11891189
}
11901190
options.on_complete = s_s3_meta_request_stream_complete;
1191-
if (request->request_type == AWS_S3_REQUEST_TYPE_UPLOAD_PART) {
1191+
if (request->request_type == AWS_S3_REQUEST_TYPE_UPLOAD_PART && !meta_request->is_express) {
1192+
/* Note: For S3express, server responses random ETag. Killing the connection in the middle may cause server
1193+
* receive two same part and result in confusing during complete MPU with etag doesn't match.
1194+
* Disable the first byte timeout for s3 express. */
11921195
options.response_first_byte_timeout_ms = aws_atomic_load_int(&meta_request->client->upload_timeout_ms);
11931196
request->upload_timeout_ms = (size_t)options.response_first_byte_timeout_ms;
11941197
}

0 commit comments

Comments
 (0)