@cryptotaxi247 / netdata-1 / commits / 47cdeca14

Fix CID372233 to CID 372236 (#11411)

* free query in case of unlikely error generating payload

Timotej S committed Aug 9, 2021 at 14:10 UTC 47cdeca14b2a1b7f6bd102ffedc53abb31bac887
1 file changed +14 -12
aclk/aclk_charts_api.c
+14 -12
@@ -5,13 +5,20 @@
5
6 #define CHART_DIM_UPDATE_NAME "ChartsAndDimensionsUpdated"
7
8 +#define QUEUE_IF_PAYLOAD_PRESENT(query) \
9 + if (likely(query->data.bin_payload.payload)) { \
10 + aclk_queue_query(query); \
11 + } else { \
12 + error("Failed to generate payload (%s)", __FUNCTION__); \
13 + aclk_query_free(query); \
14 + }
15 +
16 void aclk_chart_inst_update(char **payloads, size_t *payload_sizes, struct aclk_message_position *new_positions)
17 {
18 aclk_query_t query = aclk_query_new(CHART_DIMS_UPDATE);
19 query->data.bin_payload.payload = generate_charts_updated(&query->data.bin_payload.size, payloads, payload_sizes, new_positions);
20 query->data.bin_payload.msg_name = CHART_DIM_UPDATE_NAME;
13 - if (query->data.bin_payload.payload)
14 - aclk_queue_query(query);
21 + QUEUE_IF_PAYLOAD_PRESENT(query);
22 }
23
24 void aclk_chart_dim_update(char **payloads, size_t *payload_sizes, struct aclk_message_position *new_positions)
@@ -19,8 +26,7 @@ void aclk_chart_dim_update(char **payloads, size_t *payload_sizes, struct aclk_m
26 aclk_query_t query = aclk_query_new(CHART_DIMS_UPDATE);
27 query->data.bin_payload.payload = generate_chart_dimensions_updated(&query->data.bin_payload.size, payloads, payload_sizes, new_positions);
28 query->data.bin_payload.msg_name = CHART_DIM_UPDATE_NAME;
22 - if (query->data.bin_payload.payload)
23 - aclk_queue_query(query);
29 + QUEUE_IF_PAYLOAD_PRESENT(query);
30 }
31
32 void aclk_chart_inst_and_dim_update(char **payloads, size_t *payload_sizes, int *is_dim, struct aclk_message_position *new_positions, uint64_t batch_id)
@@ -28,8 +34,7 @@ void aclk_chart_inst_and_dim_update(char **payloads, size_t *payload_sizes, int
34 aclk_query_t query = aclk_query_new(CHART_DIMS_UPDATE);
35 query->data.bin_payload.payload = generate_charts_and_dimensions_updated(&query->data.bin_payload.size, payloads, payload_sizes, is_dim, new_positions, batch_id);
36 query->data.bin_payload.msg_name = CHART_DIM_UPDATE_NAME;
31 - if (query->data.bin_payload.payload)
32 - aclk_queue_query(query);
37 + QUEUE_IF_PAYLOAD_PRESENT(query);
38 }
39
40 void aclk_chart_config_updated(struct chart_config_updated *config_list, int list_size)
@@ -37,8 +42,7 @@ void aclk_chart_config_updated(struct chart_config_updated *config_list, int lis
42 aclk_query_t query = aclk_query_new(CHART_CONFIG_UPDATED);
43 query->data.bin_payload.payload = generate_chart_configs_updated(&query->data.bin_payload.size, config_list, list_size);
44 query->data.bin_payload.msg_name = "ChartConfigsUpdated";
40 - if (query->data.bin_payload.payload)
41 - aclk_queue_query(query);
45 + QUEUE_IF_PAYLOAD_PRESENT(query);
46 }
47
48 void aclk_chart_reset(chart_reset_t reset)
@@ -46,8 +50,7 @@ void aclk_chart_reset(chart_reset_t reset)
50 aclk_query_t query = aclk_query_new(CHART_RESET);
51 query->data.bin_payload.payload = generate_reset_chart_messages(&query->data.bin_payload.size, reset);
52 query->data.bin_payload.msg_name = "ResetChartMessages";
49 - if (query->data.bin_payload.payload)
50 - aclk_queue_query(query);
53 + QUEUE_IF_PAYLOAD_PRESENT(query);
54 }
55
56 void aclk_retention_updated(struct retention_updated *data)
@@ -56,6 +59,5 @@ void aclk_retention_updated(struct retention_updated *data)
59 query->data.bin_payload.topic = ACLK_TOPICID_RETENTION_UPDATED;
60 query->data.bin_payload.payload = generate_retention_updated(&query->data.bin_payload.size, data);
61 query->data.bin_payload.msg_name = "RetentionUpdated";
59 - if (query->data.bin_payload.payload)
60 - aclk_queue_query(query);
62 + QUEUE_IF_PAYLOAD_PRESENT(query);
63 }