summaryrefslogtreecommitdiffstats
path: root/aclk/aclk_charts_api.c
diff options
context:
space:
mode:
authorTimotej S <6674623+underhood@users.noreply.github.com>2021-08-09 14:10:29 +0200
committerGitHub <noreply@github.com>2021-08-09 14:10:29 +0200
commit47cdeca14b2a1b7f6bd102ffedc53abb31bac887 (patch)
tree9df9d0d980b066a98d13eb29283a8885833ce22d /aclk/aclk_charts_api.c
parentffd4c9219493a392c5c0992ce1e6d00bc62585d0 (diff)
Fix CID372233 to CID 372236 (#11411)
* free query in case of unlikely error generating payload
Diffstat (limited to 'aclk/aclk_charts_api.c')
-rw-r--r--aclk/aclk_charts_api.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/aclk/aclk_charts_api.c b/aclk/aclk_charts_api.c
index 9dabf82041..452020c649 100644
--- a/aclk/aclk_charts_api.c
+++ b/aclk/aclk_charts_api.c
@@ -5,13 +5,20 @@
#define CHART_DIM_UPDATE_NAME "ChartsAndDimensionsUpdated"
+#define QUEUE_IF_PAYLOAD_PRESENT(query) \
+ if (likely(query->data.bin_payload.payload)) { \
+ aclk_queue_query(query); \
+ } else { \
+ error("Failed to generate payload (%s)", __FUNCTION__); \
+ aclk_query_free(query); \
+ }
+
void aclk_chart_inst_update(char **payloads, size_t *payload_sizes, struct aclk_message_position *new_positions)
{
aclk_query_t query = aclk_query_new(CHART_DIMS_UPDATE);
query->data.bin_payload.payload = generate_charts_updated(&query->data.bin_payload.size, payloads, payload_sizes, new_positions);
query->data.bin_payload.msg_name = CHART_DIM_UPDATE_NAME;
- if (query->data.bin_payload.payload)
- aclk_queue_query(query);
+ QUEUE_IF_PAYLOAD_PRESENT(query);
}
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
aclk_query_t query = aclk_query_new(CHART_DIMS_UPDATE);
query->data.bin_payload.payload = generate_chart_dimensions_updated(&query->data.bin_payload.size, payloads, payload_sizes, new_positions);
query->data.bin_payload.msg_name = CHART_DIM_UPDATE_NAME;
- if (query->data.bin_payload.payload)
- aclk_queue_query(query);
+ QUEUE_IF_PAYLOAD_PRESENT(query);
}
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
aclk_query_t query = aclk_query_new(CHART_DIMS_UPDATE);
query->data.bin_payload.payload = generate_charts_and_dimensions_updated(&query->data.bin_payload.size, payloads, payload_sizes, is_dim, new_positions, batch_id);
query->data.bin_payload.msg_name = CHART_DIM_UPDATE_NAME;
- if (query->data.bin_payload.payload)
- aclk_queue_query(query);
+ QUEUE_IF_PAYLOAD_PRESENT(query);
}
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
aclk_query_t query = aclk_query_new(CHART_CONFIG_UPDATED);
query->data.bin_payload.payload = generate_chart_configs_updated(&query->data.bin_payload.size, config_list, list_size);
query->data.bin_payload.msg_name = "ChartConfigsUpdated";
- if (query->data.bin_payload.payload)
- aclk_queue_query(query);
+ QUEUE_IF_PAYLOAD_PRESENT(query);
}
void aclk_chart_reset(chart_reset_t reset)
@@ -46,8 +50,7 @@ void aclk_chart_reset(chart_reset_t reset)
aclk_query_t query = aclk_query_new(CHART_RESET);
query->data.bin_payload.payload = generate_reset_chart_messages(&query->data.bin_payload.size, reset);
query->data.bin_payload.msg_name = "ResetChartMessages";
- if (query->data.bin_payload.payload)
- aclk_queue_query(query);
+ QUEUE_IF_PAYLOAD_PRESENT(query);
}
void aclk_retention_updated(struct retention_updated *data)
@@ -56,6 +59,5 @@ void aclk_retention_updated(struct retention_updated *data)
query->data.bin_payload.topic = ACLK_TOPICID_RETENTION_UPDATED;
query->data.bin_payload.payload = generate_retention_updated(&query->data.bin_payload.size, data);
query->data.bin_payload.msg_name = "RetentionUpdated";
- if (query->data.bin_payload.payload)
- aclk_queue_query(query);
+ QUEUE_IF_PAYLOAD_PRESENT(query);
}