Skip to content

Commit

Permalink
Eleminate server IO leak on Cancel request
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrey M. Borodin committed Aug 30, 2023
1 parent 7dee99d commit 7365840
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 15 deletions.
11 changes: 5 additions & 6 deletions sources/cancel.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,10 @@ int od_cancel(od_global_t *global, od_rule_storage_t *storage, kiwi_key_t *key,
od_instance_t *instance = global->instance;
od_log(&instance->logger, "cancel", NULL, NULL, "cancel for %s%.*s",
server_id->id_prefix, sizeof(server_id->id), server_id->id);
od_server_t server;
od_server_init(&server, 0);
server.global = global;
od_backend_connect_cancel(&server, storage, key);
od_backend_close_connection(&server);
od_backend_close(&server);
od_server_t *server = od_server_allocate(0);
server->global = global;
od_backend_connect_cancel(server, storage, key);
od_backend_close_connection(server);
od_backend_close(server);
return 0;
}
14 changes: 5 additions & 9 deletions sources/server.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ struct od_server {
machine_tls_t *tls;
od_io_t io;
od_relay_t relay;
int is_allocated;
int is_transaction;
/* Copy stmt state */
uint64_t done_fail_response_received;
Expand Down Expand Up @@ -114,20 +113,17 @@ static inline od_server_t *od_server_allocate(int reserve_prep_stmts)
if (server == NULL)
return NULL;
od_server_init(server, reserve_prep_stmts);
server->is_allocated = 1;
return server;
}

static inline void od_server_free(od_server_t *server)
{
if (server->is_allocated) {
od_relay_free(&server->relay);
od_io_free(&server->io);
if (server->prep_stmts) {
od_hashmap_free(server->prep_stmts);
}
free(server);
od_relay_free(&server->relay);
od_io_free(&server->io);
if (server->prep_stmts) {
od_hashmap_free(server->prep_stmts);
}
free(server);
}

static inline void od_server_sync_request(od_server_t *server, uint64_t count)
Expand Down

0 comments on commit 7365840

Please sign in to comment.