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);