summaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
authorCosta Tsaousis <costa@netdata.cloud>2022-11-14 02:06:51 +0200
committerGitHub <noreply@github.com>2022-11-14 02:06:51 +0200
commitf2e157e690e34413325c2781d91a894ac39552d3 (patch)
tree73db30066490830efb0fe78ff9432877e276cc84 /web
parentcbebc18ca3e52ec5ab41272ef85a5fd45d8d3b10 (diff)
added debug info on left-over query targets (#13990)
Diffstat (limited to 'web')
-rw-r--r--web/api/queries/query.c8
-rw-r--r--web/api/queries/rrdr.c7
-rw-r--r--web/api/web_api_v1.c7
3 files changed, 14 insertions, 8 deletions
diff --git a/web/api/queries/query.c b/web/api/queries/query.c
index 5c3008c2c9..b6a27755bf 100644
--- a/web/api/queries/query.c
+++ b/web/api/queries/query.c
@@ -1963,7 +1963,13 @@ RRDR *rrd2rrdr_legacy(
}
RRDR *rrd2rrdr(ONEWAYALLOC *owa, QUERY_TARGET *qt) {
- if(!qt || !owa) return NULL;
+ if(!qt)
+ return NULL;
+
+ if(!owa) {
+ query_target_release(qt);
+ return NULL;
+ }
time_t timeout = qt->request.timeout;
time_t resampling_time_requested = qt->request.resampling_time;
diff --git a/web/api/queries/rrdr.c b/web/api/queries/rrdr.c
index 50cd9bd5f8..676224c9d8 100644
--- a/web/api/queries/rrdr.c
+++ b/web/api/queries/rrdr.c
@@ -71,14 +71,9 @@ inline void rrdr_free(ONEWAYALLOC *owa, RRDR *r) {
}
RRDR *rrdr_create(ONEWAYALLOC *owa, QUERY_TARGET *qt) {
- if(unlikely(!qt))
+ if(unlikely(!qt || !qt->query.used || !qt->window.points))
return NULL;
- if(unlikely(!qt->query.used || !qt->window.points)) {
- query_target_release(qt);
- return NULL;
- }
-
size_t dimensions = qt->query.used;
size_t points = qt->window.points;
diff --git a/web/api/web_api_v1.c b/web/api/web_api_v1.c
index 2e5aa984c3..e8ca176a9d 100644
--- a/web/api/web_api_v1.c
+++ b/web/api/web_api_v1.c
@@ -713,6 +713,7 @@ inline int web_client_api_request_v1_data(RRDHOST *host, struct web_client *w, c
RRDSET *st = NULL;
ONEWAYALLOC *owa = onewayalloc_create(0);
+ QUERY_TARGET *qt = NULL;
if(!is_valid_sp(chart) && !is_valid_sp(context)) {
buffer_sprintf(w->response.data, "No chart or context is given.");
@@ -751,7 +752,7 @@ inline int web_client_api_request_v1_data(RRDHOST *host, struct web_client *w, c
.chart_label_key = chart_label_key,
.charts_labels_filter = chart_labels_filter,
};
- QUERY_TARGET *qt = query_target_create(&qtr);
+ qt = query_target_create(&qtr);
if(!qt || !qt->query.used) {
buffer_sprintf(w->response.data, "No metrics where matched to query.");
@@ -822,6 +823,10 @@ inline int web_client_api_request_v1_data(RRDHOST *host, struct web_client *w, c
buffer_strcat(w->response.data, ");");
cleanup:
+ if(qt && qt->used) {
+ internal_error(true, "QUERY_TARGET: left non-released on query '%s'", qt->id);
+ query_target_release(qt);
+ }
onewayalloc_destroy(owa);
buffer_free(dimensions);
return ret;