@cryptotaxi247 / netdata-1 / commits / b8ea0b75e

filtering out charts in context queries, includes them in full_xxx variables (#13886)

Costa Tsaousis committed Oct 26, 2022 at 18:27 UTC b8ea0b75eb8747f89bc8380c0ce542a3c939f0f1
1 file changed +22 -19
database/rrdcontext.c
+22 -19
@@ -2372,7 +2372,8 @@ void query_target_free(void) {
2372 thread_query_target.hosts.size = 0;
2373 }
2374
2375 -static void query_target_add_metric(QUERY_TARGET_LOCALS *qtl, RRDMETRIC_ACQUIRED *rma, RRDINSTANCE *ri, bool instance_matches_label_filters) {
2375 +static void query_target_add_metric(QUERY_TARGET_LOCALS *qtl, RRDMETRIC_ACQUIRED *rma, RRDINSTANCE *ri,
2376 + bool queryable_instance) {
2377 QUERY_TARGET *qt = qtl->qt;
2378
2379 RRDMETRIC *rm = rrdmetric_acquired_value(rma);
@@ -2385,7 +2386,7 @@ static void query_target_add_metric(QUERY_TARGET_LOCALS *qtl, RRDMETRIC_ACQUIRED
2386 }
2387 qt->metrics.array[qt->metrics.used++] = rrdmetric_acquired_dup(rma);
2388
2388 - if(!instance_matches_label_filters)
2389 + if(!queryable_instance)
2390 return;
2391
2392 time_t common_first_time_t = 0;
@@ -2529,7 +2530,7 @@ static void query_target_add_metric(QUERY_TARGET_LOCALS *qtl, RRDMETRIC_ACQUIRED
2530 }
2531 }
2532
2532 -static void query_target_add_instance(QUERY_TARGET_LOCALS *qtl, RRDINSTANCE_ACQUIRED *ria) {
2533 +static void query_target_add_instance(QUERY_TARGET_LOCALS *qtl, RRDINSTANCE_ACQUIRED *ria, bool queryable_instance) {
2534 QUERY_TARGET *qt = qtl->qt;
2535
2536 RRDINSTANCE *ri = rrdinstance_acquired_value(ria);
@@ -2546,24 +2547,24 @@ static void query_target_add_instance(QUERY_TARGET_LOCALS *qtl, RRDINSTANCE_ACQU
2547 if(qt->db.minimum_latest_update_every == 0 || ri->update_every < qt->db.minimum_latest_update_every)
2548 qt->db.minimum_latest_update_every = ri->update_every;
2549
2549 - bool instance_matches_label_filters = true;
2550 - if ((qt->instances.chart_label_key_pattern && !rrdlabels_match_simple_pattern_parsed(ri->rrdlabels, qt->instances.chart_label_key_pattern, ':')) ||
2551 - (qt->instances.charts_labels_filter_pattern && !rrdlabels_match_simple_pattern_parsed(ri->rrdlabels, qt->instances.charts_labels_filter_pattern, ':')))
2552 - instance_matches_label_filters = false;
2550 + if(queryable_instance) {
2551 + if ((qt->instances.chart_label_key_pattern && !rrdlabels_match_simple_pattern_parsed(ri->rrdlabels, qt->instances.chart_label_key_pattern, ':')) ||
2552 + (qt->instances.charts_labels_filter_pattern && !rrdlabels_match_simple_pattern_parsed(ri->rrdlabels, qt->instances.charts_labels_filter_pattern, ':')))
2553 + queryable_instance = false;
2554 + }
2555
2556 size_t added = 0;
2557
2558 if(unlikely(qt->request.rma)) {
2557 - query_target_add_metric(qtl, qt->request.rma, ri, instance_matches_label_filters);
2559 + query_target_add_metric(qtl, qt->request.rma, ri, queryable_instance);
2560 added++;
2561 }
2562 else {
2563 RRDMETRIC *rm;
2562 - dfe_start_read(ri->rrdmetrics, rm){
2563 - query_target_add_metric(qtl, (RRDMETRIC_ACQUIRED *) rm_dfe.item, ri,
2564 - instance_matches_label_filters);
2565 - added++;
2566 - }
2564 + dfe_start_read(ri->rrdmetrics, rm) {
2565 + query_target_add_metric(qtl, (RRDMETRIC_ACQUIRED *) rm_dfe.item, ri, queryable_instance);
2566 + added++;
2567 + }
2568 dfe_done(rm);
2569 }
2570
@@ -2588,23 +2589,25 @@ static void query_target_add_context(QUERY_TARGET_LOCALS *qtl, RRDCONTEXT_ACQUIR
2589
2590 size_t added = 0;
2591 if(unlikely(qt->request.ria)) {
2591 - query_target_add_instance(qtl, qt->request.ria);
2592 + query_target_add_instance(qtl, qt->request.ria, true);
2593 added++;
2594 }
2595 else if(unlikely(qtl->st && qtl->st->rrdcontext == rca && qtl->st->rrdinstance)) {
2595 - query_target_add_instance(qtl, qtl->st->rrdinstance);
2596 + query_target_add_instance(qtl, qtl->st->rrdinstance, true);
2597 added++;
2598 }
2599 else {
2600 RRDINSTANCE *ri;
2601 dfe_start_read(rc->rrdinstances, ri) {
2602 + bool queryable_instance = false;
2603 if(!qt->instances.pattern
2604 || (qtl->match_ids && simple_pattern_matches(qt->instances.pattern, string2str(ri->id)))
2605 || (qtl->match_names && simple_pattern_matches(qt->instances.pattern, string2str(ri->name)))
2604 - ) {
2605 - query_target_add_instance(qtl, (RRDINSTANCE_ACQUIRED *)ri_dfe.item);
2606 - added++;
2607 - }
2606 + )
2607 + queryable_instance = true;
2608 +
2609 + query_target_add_instance(qtl, (RRDINSTANCE_ACQUIRED *)ri_dfe.item, queryable_instance);
2610 + added++;
2611 }
2612 dfe_done(ri);
2613 }