@cryptotaxi247 / netdata-1 / commits / b0d42a5e6

Stop mdstat collector from looking up archived charts. (#9583)

Markos Fountoulakis committed Jul 27, 2020 at 12:44 UTC b0d42a5e61e610c2ef5a6c277bd5908c9c75b771
2 files changed +14 -6
collectors/proc.plugin/proc_mdstat.c
+6 -6
@@ -68,7 +68,7 @@ static inline void make_chart_obsolete(char *name, const char *id_modifier) {
68
69 if(likely(name && id_modifier)) {
70 snprintfz(id, 50, "mdstat.%s_%s", name, id_modifier);
71 - st = rrdset_find_byname_localhost(id);
71 + st = rrdset_find_active_byname_localhost(id);
72 if(likely(st)) rrdset_is_obsolete(st);
73 }
74 }
@@ -414,7 +414,7 @@ int do_proc_mdstat(int update_every, usec_t dt) {
414 if(likely(do_disks)) {
415 snprintfz(id, 50, "%s_disks", raid->name);
416
417 - if(unlikely(!raid->st_disks && !(raid->st_disks = rrdset_find_byname_localhost(id)))) {
417 + if(unlikely(!raid->st_disks && !(raid->st_disks = rrdset_find_active_byname_localhost(id)))) {
418 snprintfz(family, 50, "%s", raid->name);
419
420 raid->st_disks = rrdset_create_localhost(
@@ -453,7 +453,7 @@ int do_proc_mdstat(int update_every, usec_t dt) {
453 if(likely(do_mismatch)) {
454 snprintfz(id, 50, "%s_mismatch", raid->name);
455
456 - if(unlikely(!raid->st_mismatch_cnt && !(raid->st_mismatch_cnt = rrdset_find_byname_localhost(id)))) {
456 + if(unlikely(!raid->st_mismatch_cnt && !(raid->st_mismatch_cnt = rrdset_find_active_byname_localhost(id)))) {
457 snprintfz(family, 50, "%s", raid->name);
458
459 raid->st_mismatch_cnt = rrdset_create_localhost(
@@ -489,7 +489,7 @@ int do_proc_mdstat(int update_every, usec_t dt) {
489 if(likely(do_operations)) {
490 snprintfz(id, 50, "%s_operation", raid->name);
491
492 - if(unlikely(!raid->st_operation && !(raid->st_operation = rrdset_find_byname_localhost(id)))) {
492 + if(unlikely(!raid->st_operation && !(raid->st_operation = rrdset_find_active_byname_localhost(id)))) {
493 snprintfz(family, 50, "%s", raid->name);
494
495 raid->st_operation = rrdset_create_localhost(
@@ -532,7 +532,7 @@ int do_proc_mdstat(int update_every, usec_t dt) {
532
533 snprintfz(id, 50, "%s_finish", raid->name);
534
535 - if(unlikely(!raid->st_finish && !(raid->st_finish = rrdset_find_byname_localhost(id)))) {
535 + if(unlikely(!raid->st_finish && !(raid->st_finish = rrdset_find_active_byname_localhost(id)))) {
536 snprintfz(family, 50, "%s", raid->name);
537
538 raid->st_finish = rrdset_create_localhost(
@@ -566,7 +566,7 @@ int do_proc_mdstat(int update_every, usec_t dt) {
566
567 snprintfz(id, 50, "%s_speed", raid->name);
568
569 - if(unlikely(!raid->st_speed && !(raid->st_speed = rrdset_find_byname_localhost(id)))) {
569 + if(unlikely(!raid->st_speed && !(raid->st_speed = rrdset_find_active_byname_localhost(id)))) {
570 snprintfz(family, 50, "%s", raid->name);
571
572 raid->st_speed = rrdset_create_localhost(
database/rrd.h
+8
@@ -984,6 +984,14 @@ static inline RRDSET *rrdset_find_active_bytype_localhost(const char *type, cons
984
985 extern RRDSET *rrdset_find_byname(RRDHOST *host, const char *name);
986 #define rrdset_find_byname_localhost(name) rrdset_find_byname(localhost, name)
987 +/* This will not return charts that are archived */
988 +static inline RRDSET *rrdset_find_active_byname_localhost(const char *name)
989 +{
990 + RRDSET *st = rrdset_find_byname_localhost(name);
991 + if (unlikely(st && rrdset_flag_check(st, RRDSET_FLAG_ARCHIVED)))
992 + return NULL;
993 + return st;
994 +}
995
996 extern void rrdset_next_usec_unfiltered(RRDSET *st, usec_t microseconds);
997 extern void rrdset_next_usec(RRDSET *st, usec_t microseconds);