@@ -37,7 +37,6 @@ struct aws_s3_request *aws_s3_request_new(
3737
3838 request -> retry_start_timestamp_ns = -1 ;
3939 request -> retry_end_timestamp_ns = -1 ;
40- request -> retry_duration_ns = -1 ;
4140
4241 request -> part_number = part_number ;
4342 request -> record_response_headers = (flags & AWS_S3_REQUEST_FLAG_RECORD_RESPONSE_HEADERS ) != 0 ;
@@ -139,7 +138,12 @@ void aws_s3_request_setup_send_data(struct aws_s3_request *request, struct aws_h
139138 /* copy delay duration since previous attempt */
140139 request -> send_data .metrics -> time_metrics .retry_delay_start_timestamp_ns = request -> retry_start_timestamp_ns ;
141140 request -> send_data .metrics -> time_metrics .retry_delay_end_timestamp_ns = request -> retry_end_timestamp_ns ;
142- request -> send_data .metrics -> time_metrics .retry_delay_duration_ns = request -> retry_duration_ns ;
141+ if (request -> retry_end_timestamp_ns != -1 ) {
142+ request -> send_data .metrics -> time_metrics .retry_delay_duration_ns = request -> retry_end_timestamp_ns - request -> retry_start_timestamp_ns ;
143+ }
144+
145+ /* set pointer to request */
146+ request -> send_data .metrics -> crt_info_metrics .request_id = request ;
143147
144148 aws_http_message_acquire (message );
145149}
@@ -218,7 +222,7 @@ static void s_s3_request_metrics_destroy(void *arg) {
218222 aws_http_headers_release (metrics -> req_resp_info_metrics .response_headers );
219223 aws_string_destroy (metrics -> req_resp_info_metrics .request_path_query );
220224 aws_string_destroy (metrics -> req_resp_info_metrics .host_address );
221- aws_string_destroy (metrics -> req_resp_info_metrics .request_id );
225+ aws_string_destroy (metrics -> req_resp_info_metrics .request_attempt_id );
222226 aws_string_destroy (metrics -> req_resp_info_metrics .amz_id_2 );
223227 aws_string_destroy (metrics -> req_resp_info_metrics .operation_name );
224228 aws_string_destroy (metrics -> crt_info_metrics .ip_address );
@@ -291,15 +295,15 @@ struct aws_s3_request_metrics *aws_s3_request_metrics_release(struct aws_s3_requ
291295 return NULL ;
292296}
293297
294- int aws_s3_request_metrics_get_request_id (
298+ int aws_s3_request_metrics_get_request_attempt_id (
295299 const struct aws_s3_request_metrics * metrics ,
296- const struct aws_string * * out_request_id ) {
300+ const struct aws_string * * out_request_attempt_id ) {
297301 AWS_PRECONDITION (metrics );
298- AWS_PRECONDITION (out_request_id );
299- if (metrics -> req_resp_info_metrics .request_id == NULL ) {
302+ AWS_PRECONDITION (out_request_attempt_id );
303+ if (metrics -> req_resp_info_metrics .request_attempt_id == NULL ) {
300304 return aws_raise_error (AWS_ERROR_S3_METRIC_DATA_NOT_AVAILABLE );
301305 }
302- * out_request_id = metrics -> req_resp_info_metrics .request_id ;
306+ * out_request_attempt_id = metrics -> req_resp_info_metrics .request_attempt_id ;
303307 return AWS_OP_SUCCESS ;
304308}
305309
@@ -565,6 +569,18 @@ int aws_s3_request_metrics_get_connection_id(const struct aws_s3_request_metrics
565569 return AWS_OP_SUCCESS ;
566570}
567571
572+ int aws_s3_request_metrics_get_request_id (
573+ const struct aws_s3_request_metrics * metrics ,
574+ const struct aws_string * * out_request_id ) {
575+ AWS_PRECONDITION (metrics );
576+ AWS_PRECONDITION (out_request_id );
577+ if (metrics -> crt_info_metrics .request_id == NULL ) {
578+ return aws_raise_error (AWS_ERROR_S3_METRIC_DATA_NOT_AVAILABLE );
579+ }
580+ * out_request_id = metrics -> crt_info_metrics .request_id ;
581+ return AWS_OP_SUCCESS ;
582+ }
583+
568584int aws_s3_request_metrics_get_thread_id (const struct aws_s3_request_metrics * metrics , aws_thread_id_t * thread_id ) {
569585 AWS_PRECONDITION (metrics );
570586 AWS_PRECONDITION (thread_id );
0 commit comments