Skip to content

Commit 1ea37c3

Browse files
committed
add a request ptr
1 parent 281301c commit 1ea37c3

File tree

7 files changed

+30
-6
lines changed

7 files changed

+30
-6
lines changed

include/aws/s3/private/s3_meta_request_impl.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ struct s3_data_read_metrics {
131131
uint64_t start_timestamp;
132132
uint64_t end_timestamp;
133133
aws_thread_id_t thread_id;
134+
/* The pointer to the connection that request was made from */
135+
void *request_ptr;
134136
};
135137

136138
/**

include/aws/s3/private/s3_request.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ struct aws_s3_request_metrics {
100100
struct aws_string *ip_address;
101101
/* The pointer to the connection that request was made from */
102102
void *connection_id;
103+
void *request_ptr;
103104
/* The aws_thread_id_t to the thread that request ran on */
104105
aws_thread_id_t thread_id;
105106
/* The stream-id, which is the idex when the stream was activated. */

include/aws/s3/s3_client.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1481,6 +1481,11 @@ int aws_s3_request_metrics_get_body_read_total_without_reset_ns(
14811481
AWS_S3_API
14821482
int aws_s3_request_metrics_get_error_code(const struct aws_s3_request_metrics *metrics);
14831483

1484+
/* Get the request pointer from request metrics. AWS_ERROR_S3_METRIC_DATA_NOT_AVAILABLE will be raised if data not
1485+
* available */
1486+
AWS_S3_API
1487+
int aws_s3_request_metrics_get_request_ptr(const struct aws_s3_request_metrics *metrics, void **out_request_ptr);
1488+
14841489
AWS_EXTERN_C_END
14851490
AWS_POP_SANE_WARNING_LEVEL
14861491

source/s3_auto_ranged_put.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1042,7 +1042,7 @@ struct aws_future_http_message *s_s3_prepare_upload_part(struct aws_s3_request *
10421042
/* write every read metric to a file */
10431043
if (metrics_file) {
10441044
// Write CSV header
1045-
fprintf(metrics_file, "index,offset,size,start_timestamp,duration_ns,threadid\n");
1045+
fprintf(metrics_file, "index,offset,size,start_timestamp,duration_ns,threadid,requestptr\n");
10461046
// Write all metrics
10471047
for (size_t j = 0; j < metric_length; j++) {
10481048
struct s3_data_read_metrics m;
@@ -1052,13 +1052,14 @@ struct aws_future_http_message *s_s3_prepare_upload_part(struct aws_s3_request *
10521052

10531053
fprintf(
10541054
metrics_file,
1055-
"%zu,%llu,%llu,%llu,%llu,%zu\n",
1055+
"%zu,%llu,%llu,%llu,%llu,%zu,%p\n",
10561056
j,
10571057
(unsigned long long)m.offset,
10581058
(unsigned long long)m.size,
10591059
(unsigned long long)m.start_timestamp,
10601060
(unsigned long long)duration,
1061-
(size_t)m.thread_id);
1061+
(size_t)m.thread_id,
1062+
m.request_ptr);
10621063
}
10631064
aws_array_list_clear(&meta_request->read_metrics_list);
10641065
fclose(metrics_file);

source/s3_meta_request.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -521,7 +521,7 @@ static void s_s3_meta_request_destroy(void *user_data) {
521521
/* write every read metric to a file */
522522
if (metrics_file) {
523523
// Write CSV header
524-
fprintf(metrics_file, "index,offset,size,start_timestamp,duration_ns,threadid\n");
524+
fprintf(metrics_file, "index,offset,size,start_timestamp,duration_ns,threadid,requestptr\n");
525525
// Write all metrics
526526
for (size_t j = 0; j < metric_length; j++) {
527527
struct s3_data_read_metrics m;
@@ -531,13 +531,14 @@ static void s_s3_meta_request_destroy(void *user_data) {
531531

532532
fprintf(
533533
metrics_file,
534-
"%zu,%llu,%llu,%llu,%llu,%zu\n",
534+
"%zu,%llu,%llu,%llu,%llu,%zu,%p\n",
535535
j,
536536
(unsigned long long)m.offset,
537537
(unsigned long long)m.size,
538538
(unsigned long long)m.start_timestamp,
539539
(unsigned long long)duration,
540-
(size_t)m.thread_id);
540+
(size_t)m.thread_id,
541+
m.request_ptr);
541542
}
542543
fclose(metrics_file);
543544

source/s3_parallel_input_stream.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,7 @@ static int s_aws_s3_mmap_part_streaming_input_stream_read(struct aws_input_strea
327327
read_length = aws_min_size(read_length, impl->reading_chunk_buf->len - impl->in_chunk_offset);
328328
impl->metrics.offset = impl->offset + impl->total_length_read;
329329
impl->metrics.size = read_length;
330+
impl->metrics.request_ptr = impl->request;
330331

331332
struct aws_byte_cursor chunk_cursor = aws_byte_cursor_from_buf(impl->reading_chunk_buf);
332333
aws_byte_cursor_advance(&chunk_cursor, impl->in_chunk_offset);

source/s3_request.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@ struct aws_s3_request_metrics *aws_s3_request_metrics_new(
181181
metrics->req_resp_info_metrics.request_type = request->request_type;
182182
metrics->req_resp_info_metrics.operation_name = aws_string_new_from_string(allocator, request->operation_name);
183183

184+
/* Set the request pointer */
185+
metrics->crt_info_metrics.request_ptr = (void *)request;
186+
184187
metrics->time_metrics.start_timestamp_ns = -1;
185188
metrics->time_metrics.end_timestamp_ns = -1;
186189
metrics->time_metrics.total_duration_ns = -1;
@@ -462,3 +465,13 @@ int aws_s3_request_metrics_get_body_read_total_without_reset_ns(
462465
*body_read_total_without_reset_ns = metrics->time_metrics.body_read_total_without_reset_ns;
463466
return AWS_OP_SUCCESS;
464467
}
468+
469+
int aws_s3_request_metrics_get_request_ptr(const struct aws_s3_request_metrics *metrics, void **out_request_ptr) {
470+
AWS_PRECONDITION(metrics);
471+
AWS_PRECONDITION(out_request_ptr);
472+
if (metrics->crt_info_metrics.request_ptr == NULL) {
473+
return aws_raise_error(AWS_ERROR_S3_METRIC_DATA_NOT_AVAILABLE);
474+
}
475+
*out_request_ptr = metrics->crt_info_metrics.request_ptr;
476+
return AWS_OP_SUCCESS;
477+
}

0 commit comments

Comments
 (0)