Skip to content

Commit 924410a

Browse files
authored
Removing aws_s3_meta_request_acquire_client (#91)
1 parent 708eeeb commit 924410a

4 files changed

Lines changed: 14 additions & 54 deletions

File tree

include/aws/s3/private/s3_meta_request_impl.h

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,10 @@ struct aws_s3_meta_request {
104104

105105
struct aws_cached_signing_config_aws *cached_signing_config;
106106

107+
/* Client that created this meta request which also processes this request. After the meta request is finished,
108+
* this reference is removed. */
109+
struct aws_s3_client *client;
110+
107111
/* User data to be passed to each customer specified callback.*/
108112
void *user_data;
109113

@@ -116,10 +120,6 @@ struct aws_s3_meta_request {
116120
struct {
117121
struct aws_mutex lock;
118122

119-
/* Client that created this meta request which also processes this request. After the meta request is finished,
120-
* this reference is removed. */
121-
struct aws_s3_client *client;
122-
123123
/* Priority queue for pending streaming requests. We use a priority queue to keep parts in order so that we
124124
* can stream them to the caller in order. */
125125
struct aws_priority_queue pending_body_streaming_requests;
@@ -203,11 +203,6 @@ void aws_s3_meta_request_lock_synced_data(struct aws_s3_meta_request *meta_reque
203203
AWS_S3_API
204204
void aws_s3_meta_request_unlock_synced_data(struct aws_s3_meta_request *meta_request);
205205

206-
/* Gets the client reference in the meta request synced_data, acquiring a reference to it if it exists. After calling
207-
* this function, it is necessary to release that reference. */
208-
AWS_S3_API
209-
struct aws_s3_client *aws_s3_meta_request_acquire_client(struct aws_s3_meta_request *meta_request);
210-
211206
/* Called by the client to retrieve the next request and update the meta request's internal state. out_request is
212207
* optional, and can be NULL if just desiring to update internal state. */
213208
AWS_S3_API

source/s3_meta_request.c

Lines changed: 6 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -81,29 +81,6 @@ void aws_s3_meta_request_unlock_synced_data(struct aws_s3_meta_request *meta_req
8181
aws_mutex_unlock(&meta_request->synced_data.lock);
8282
}
8383

84-
struct aws_s3_client *aws_s3_meta_request_acquire_client(struct aws_s3_meta_request *meta_request) {
85-
AWS_PRECONDITION(meta_request);
86-
87-
struct aws_s3_client *client = NULL;
88-
89-
aws_s3_meta_request_lock_synced_data(meta_request);
90-
91-
client = meta_request->synced_data.client;
92-
93-
if (client != NULL) {
94-
aws_s3_client_acquire(client);
95-
} else {
96-
AWS_LOGF_DEBUG(
97-
AWS_LS_S3_META_REQUEST,
98-
"id=%p Meta request trying to get reference to client but client is null.",
99-
(void *)meta_request);
100-
}
101-
102-
aws_s3_meta_request_unlock_synced_data(meta_request);
103-
104-
return client;
105-
}
106-
10784
int aws_s3_meta_request_init_base(
10885
struct aws_allocator *allocator,
10986
struct aws_s3_client *client,
@@ -159,10 +136,10 @@ int aws_s3_meta_request_init_base(
159136
sizeof(struct aws_s3_request *),
160137
s_s3_request_priority_queue_pred);
161138

162-
/* Client is currently optional to allow spining up a meta_request without a client in a test. */
139+
/* Client is currently optional to allow spinning up a meta_request without a client in a test. */
163140
if (client != NULL) {
164141
aws_s3_client_acquire(client);
165-
meta_request->synced_data.client = client;
142+
meta_request->client = client;
166143
}
167144

168145
meta_request->synced_data.next_streaming_part = 1;
@@ -293,7 +270,7 @@ static void s_s3_meta_request_destroy(void *user_data) {
293270

294271
aws_cached_signing_config_destroy(meta_request->cached_signing_config);
295272
aws_mutex_clean_up(&meta_request->synced_data.lock);
296-
aws_s3_client_release(meta_request->synced_data.client);
273+
aws_s3_client_release(meta_request->client);
297274

298275
AWS_ASSERT(aws_priority_queue_size(&meta_request->synced_data.pending_body_streaming_requests) == 0);
299276
aws_priority_queue_clean_up(&meta_request->synced_data.pending_body_streaming_requests);
@@ -852,7 +829,7 @@ void aws_s3_meta_request_stream_response_body_synced(
852829
return;
853830
}
854831

855-
struct aws_s3_client *client = meta_request->synced_data.client;
832+
struct aws_s3_client *client = meta_request->client;
856833
AWS_ASSERT(client != NULL);
857834

858835
/* Push it into the priority queue. */
@@ -966,7 +943,6 @@ void aws_s3_meta_request_finish_default(struct aws_s3_meta_request *meta_request
966943
AWS_PRECONDITION(meta_request);
967944

968945
bool already_finished = false;
969-
struct aws_s3_client *client = NULL;
970946
struct aws_linked_list release_request_list;
971947
aws_linked_list_init(&release_request_list);
972948

@@ -982,10 +958,6 @@ void aws_s3_meta_request_finish_default(struct aws_s3_meta_request *meta_request
982958

983959
meta_request->synced_data.state = AWS_S3_META_REQUEST_STATE_FINISHED;
984960

985-
/* Get rid of our client reference. Release it outside of the lock. */
986-
client = meta_request->synced_data.client;
987-
meta_request->synced_data.client = NULL;
988-
989961
/* Clean out the pending-stream-to-caller priority queue*/
990962
while (aws_priority_queue_size(&meta_request->synced_data.pending_body_streaming_requests) > 0) {
991963
struct aws_s3_request *request = NULL;
@@ -1012,7 +984,8 @@ void aws_s3_meta_request_finish_default(struct aws_s3_meta_request *meta_request
1012984
aws_s3_request_release(release_request);
1013985
}
1014986

1015-
aws_s3_client_release(client);
987+
aws_s3_client_release(meta_request->client);
988+
meta_request->client = NULL;
1016989

1017990
AWS_LOGF_DEBUG(
1018991
AWS_LS_S3_META_REQUEST,

source/s3_request.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ void aws_s3_request_setup_send_data(struct aws_s3_request *request, struct aws_h
3939
aws_http_message_acquire(message);
4040
}
4141

42-
void s_s3_request_clean_up_send_data_message(struct aws_s3_request *request) {
42+
static void s_s3_request_clean_up_send_data_message(struct aws_s3_request *request) {
4343
AWS_PRECONDITION(request);
4444

4545
struct aws_http_message *message = request->send_data.message;
@@ -98,12 +98,10 @@ static void s_s3_request_destroy(void *user_data) {
9898
struct aws_s3_meta_request *meta_request = request->meta_request;
9999

100100
if (meta_request != NULL) {
101-
struct aws_s3_client *client = aws_s3_meta_request_acquire_client(meta_request);
101+
struct aws_s3_client *client = meta_request->client;
102102

103103
if (client != NULL) {
104104
aws_s3_client_notify_request_destroyed(client, request);
105-
aws_s3_client_release(client);
106-
client = NULL;
107105
}
108106
}
109107

tests/s3_retry_tests.c

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -297,15 +297,12 @@ static void s_s3_meta_request_send_request_finish_fail_first(
297297
struct aws_http_stream *stream,
298298
int error_code) {
299299

300-
struct aws_s3_client *client = aws_s3_meta_request_acquire_client(vip_connection->request->meta_request);
300+
struct aws_s3_client *client = vip_connection->request->meta_request->client;
301301
AWS_ASSERT(client != NULL);
302302

303303
struct aws_s3_tester *tester = client->shutdown_callback_user_data;
304304
AWS_ASSERT(tester != NULL);
305305

306-
aws_s3_client_release(client);
307-
client = NULL;
308-
309306
if (aws_s3_tester_inc_counter2(tester) == 1) {
310307
AWS_ASSERT(vip_connection->request->send_data.response_status == 404);
311308

@@ -376,12 +373,9 @@ static void s_finished_request_remove_upload_id(
376373
aws_byte_buf_reset(&request->send_data.response_body, false);
377374
}
378375

379-
struct aws_s3_client *client = aws_s3_meta_request_acquire_client(meta_request);
376+
struct aws_s3_client *client = meta_request->client;
380377
struct aws_s3_tester *tester = client->shutdown_callback_user_data;
381378

382-
aws_s3_client_release(client);
383-
client = NULL;
384-
385379
struct aws_s3_meta_request_vtable *original_meta_request_vtable =
386380
aws_s3_tester_get_meta_request_vtable_patch(tester, 0)->original_vtable;
387381

0 commit comments

Comments
 (0)