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
}