@cryptotaxi247 / netdata-1 / commits / 37ba5c1a2

rrdcontexts allow not linked dimensions and charts (#13501)

Costa Tsaousis committed Aug 9, 2022 at 16:29 UTC 37ba5c1a29990c701a2c24ca1153b68b3ee4e7b2
1 file changed +15 -4
database/rrdcontext.c
+15 -4
@@ -706,8 +706,10 @@ static inline void rrdmetric_from_rrddim(RRDDIM *rd) {
706
707 #define rrddim_get_rrdmetric(rd) rrddim_get_rrdmetric_with_trace(rd, __FUNCTION__)
708 static inline RRDMETRIC *rrddim_get_rrdmetric_with_trace(RRDDIM *rd, const char *function) {
709 - if(unlikely(!rd->rrdmetric))
710 - fatal("RRDMETRIC: RRDDIM '%s' is not linked to an RRDMETRIC at %s()", rd->id, function);
709 + if(unlikely(!rd->rrdmetric)) {
710 + error("RRDMETRIC: RRDDIM '%s' is not linked to an RRDMETRIC at %s()", rd->id, function);
711 + return NULL;
712 + }
713
714 RRDMETRIC *rm = rrdmetric_acquired_value(rd->rrdmetric);
715
@@ -719,6 +721,7 @@ static inline RRDMETRIC *rrddim_get_rrdmetric_with_trace(RRDDIM *rd, const char
721
722 static inline void rrdmetric_rrddim_is_freed(RRDDIM *rd) {
723 RRDMETRIC *rm = rrddim_get_rrdmetric(rd);
724 + if(unlikely(!rm)) return;
725
726 if(unlikely(rrd_flag_is_collected(rm)))
727 rrd_flag_set_archived(rm);
@@ -731,6 +734,7 @@ static inline void rrdmetric_rrddim_is_freed(RRDDIM *rd) {
734
735 static inline void rrdmetric_updated_rrddim_flags(RRDDIM *rd) {
736 RRDMETRIC *rm = rrddim_get_rrdmetric(rd);
737 + if(unlikely(!rm)) return;
738
739 if(unlikely(rd->flags & (RRDDIM_FLAG_ARCHIVED | RRDDIM_FLAG_OBSOLETE))) {
740 if(unlikely(rrd_flag_is_collected(rm)))
@@ -742,6 +746,7 @@ static inline void rrdmetric_updated_rrddim_flags(RRDDIM *rd) {
746
747 static inline void rrdmetric_collected_rrddim(RRDDIM *rd) {
748 RRDMETRIC *rm = rrddim_get_rrdmetric(rd);
749 + if(unlikely(!rm)) return;
750
751 if(unlikely(!rrd_flag_is_collected(rm)))
752 rrd_flag_set_collected(rm);
@@ -1217,8 +1222,10 @@ static inline void rrdinstance_from_rrdset(RRDSET *st) {
1222
1223 #define rrdset_get_rrdinstance(st) rrdset_get_rrdinstance_with_trace(st, __FUNCTION__);
1224 static inline RRDINSTANCE *rrdset_get_rrdinstance_with_trace(RRDSET *st, const char *function) {
1220 - if(unlikely(!st->rrdinstance))
1221 - fatal("RRDINSTANCE: RRDSET '%s' is not linked to an RRDINSTANCE at %s()", st->id, function);
1225 + if(unlikely(!st->rrdinstance)) {
1226 + error("RRDINSTANCE: RRDSET '%s' is not linked to an RRDINSTANCE at %s()", st->id, function);
1227 + return NULL;
1228 + }
1229
1230 RRDINSTANCE *ri = rrdinstance_acquired_value(st->rrdinstance);
1231
@@ -1230,6 +1237,7 @@ static inline RRDINSTANCE *rrdset_get_rrdinstance_with_trace(RRDSET *st, const c
1237
1238 static inline void rrdinstance_rrdset_is_freed(RRDSET *st) {
1239 RRDINSTANCE *ri = rrdset_get_rrdinstance(st);
1240 + if(unlikely(!ri)) return;
1241
1242 rrd_flag_set_archived(ri);
1243
@@ -1257,6 +1265,7 @@ static inline void rrdinstance_updated_rrdset_name(RRDSET *st) {
1265 if(unlikely(!st->rrdinstance)) return;
1266
1267 RRDINSTANCE *ri = rrdset_get_rrdinstance(st);
1268 + if(unlikely(!ri)) return;
1269
1270 STRING *old = ri->name;
1271 ri->name = string_strdupz(st->name);
@@ -1285,6 +1294,7 @@ static inline void rrdinstance_updated_rrdset_flags_no_action(RRDINSTANCE *ri, R
1294
1295 static inline void rrdinstance_updated_rrdset_flags(RRDSET *st) {
1296 RRDINSTANCE *ri = rrdset_get_rrdinstance(st);
1297 + if(unlikely(!ri)) return;
1298
1299 rrdinstance_updated_rrdset_flags_no_action(ri, st);
1300
@@ -1295,6 +1305,7 @@ static inline void rrdinstance_updated_rrdset_flags(RRDSET *st) {
1305
1306 static inline void rrdinstance_collected_rrdset(RRDSET *st) {
1307 RRDINSTANCE *ri = rrdset_get_rrdinstance(st);
1308 + if(unlikely(!ri)) return;
1309
1310 rrdinstance_updated_rrdset_flags_no_action(ri, st);
1311