@cryptotaxi247 / netdata-1 / commits / ab81ad3f7

rrd metadata needs to be discoverable while replication is running (#20200)

Costa Tsaousis committed Apr 28, 2025 at 17:08 UTC ab81ad3f7de7a2b121d23ca6e6511749dbf24d80
4 files changed +11 -5
src/database/rrddim.c
+6 -2
@@ -336,7 +336,7 @@ inline RRDDIM *rrddim_find(RRDSET *st, const char *id) {
336
337 RRDDIM *rd = rrddim_index_find(st, id);
338 if(rd) {
339 - if(rrddim_flag_check(rd, RRDDIM_FLAG_OBSOLETE))
339 + if(rrddim_flag_check(rd, RRDDIM_FLAG_OBSOLETE) && !rrdset_is_discoverable(st))
340 return NULL;
341
342 rd->rrdset->last_accessed_time_s = now_realtime_sec();
@@ -351,7 +351,7 @@ inline RRDDIM_ACQUIRED *rrddim_find_and_acquire(RRDSET *st, const char *id) {
351 RRDDIM_ACQUIRED *rda = (RRDDIM_ACQUIRED *)dictionary_get_and_acquire_item(st->rrddim_root_index, id);
352 if(rda) {
353 RRDDIM *rd = (RRDDIM *) dictionary_acquired_item_value((const DICTIONARY_ITEM *)rda);
354 - if(rrddim_flag_check(rd, RRDDIM_FLAG_OBSOLETE)) {
354 + if(rrddim_flag_check(rd, RRDDIM_FLAG_OBSOLETE) && !rrdset_is_discoverable(st)) {
355 dictionary_acquired_item_release(st->rrddim_root_index, (const DICTIONARY_ITEM *)rda);
356 return NULL;
357 }
@@ -562,6 +562,7 @@ int rrddim_hide(RRDSET *st, const char *id) {
562
563 rrddim_option_set(rd, RRDDIM_OPTION_HIDDEN);
564 rrdcontext_updated_rrddim_flags(rd);
565 + rrdset_metadata_updated(st);
566 return 0;
567 }
568
@@ -582,6 +583,7 @@ int rrddim_unhide(RRDSET *st, const char *id) {
583
584 rrddim_option_clear(rd, RRDDIM_OPTION_HIDDEN);
585 rrdcontext_updated_rrddim_flags(rd);
586 + rrdset_metadata_updated(st);
587 return 0;
588 }
589
@@ -592,6 +594,7 @@ inline void rrddim_is_obsolete___safe_from_collector_thread(RRDSET *st, RRDDIM *
594 rrdset_flag_set(st, RRDSET_FLAG_OBSOLETE_DIMENSIONS);
595 rrdhost_flag_set(st->rrdhost, RRDHOST_FLAG_PENDING_OBSOLETE_DIMENSIONS);
596 rrdcontext_updated_rrddim_flags(rd);
597 + rrdset_metadata_updated(st);
598 }
599
600 inline void rrddim_isnot_obsolete___safe_from_collector_thread(RRDSET *st __maybe_unused, RRDDIM *rd) {
@@ -600,6 +603,7 @@ inline void rrddim_isnot_obsolete___safe_from_collector_thread(RRDSET *st __mayb
603 rrddim_flag_clear(rd, RRDDIM_FLAG_OBSOLETE);
604 rrddim_reinitialize_collection(rd);
605 rrdcontext_updated_rrddim_flags(rd);
606 + rrdset_metadata_updated(st);
607 }
608
609 // ----------------------------------------------------------------------------
src/database/rrdset-index-id.c
+2 -2
@@ -338,7 +338,7 @@ RRDSET *rrdset_find(RRDHOST *host, const char *id) {
338 RRDSET *st = rrdset_index_find(host, id);
339
340 if(st) {
341 - if(rrdset_flag_check(st, RRDSET_FLAG_OBSOLETE))
341 + if(!rrdset_is_discoverable(st))
342 return NULL;
343
344 st->last_accessed_time_s = now_realtime_sec();
@@ -366,7 +366,7 @@ RRDSET_ACQUIRED *rrdset_find_and_acquire(RRDHOST *host, const char *id) {
366 if(sta) {
367 RRDSET *st = (RRDSET *) dictionary_acquired_item_value((const DICTIONARY_ITEM *)sta);
368 if(st) {
369 - if(rrdset_flag_check(st, RRDSET_FLAG_OBSOLETE)) {
369 + if(!rrdset_is_discoverable(st)) {
370 dictionary_acquired_item_release(host->rrdset_root_index, (const DICTIONARY_ITEM *)sta);
371 return NULL;
372 }
src/database/rrdset-index-name.c
+1 -1
@@ -111,7 +111,7 @@ RRDSET *rrdset_find_byname(RRDHOST *host, const char *name) {
111 RRDSET *st = rrdset_index_find_name(host, name);
112
113 if(st) {
114 - if (rrdset_flag_check(st, RRDSET_FLAG_OBSOLETE))
114 + if(!rrdset_is_discoverable(st))
115 return NULL;
116
117 st->last_accessed_time_s = now_realtime_sec();
src/database/rrdset.h
+2
@@ -76,6 +76,8 @@ typedef enum __attribute__ ((__packed__)) rrdset_flags {
76 #define rrdset_is_replicating(st) (rrdset_flag_check(st, RRDSET_FLAG_SENDER_REPLICATION_IN_PROGRESS|RRDSET_FLAG_RECEIVER_REPLICATION_IN_PROGRESS) \
77 && !rrdset_flag_check(st, RRDSET_FLAG_SENDER_REPLICATION_FINISHED|RRDSET_FLAG_RECEIVER_REPLICATION_FINISHED))
78
79 +#define rrdset_is_discoverable(st) (rrdset_is_replicating(st) || !rrdset_flag_check(st, RRDSET_FLAG_OBSOLETE))
80 +
81 // --------------------------------------------------------------------------------------------------------------------
82
83 struct rrdset {