summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStelios Fragkakis <52996999+stelfrag@users.noreply.github.com>2023-09-18 15:46:39 +0300
committerGitHub <noreply@github.com>2023-09-18 15:46:39 +0300
commit0b4b428cba579a282df6737e7d62218b0d292b41 (patch)
tree1d7ab390643d09544c33a72055c67cb342494b38
parent954b3170fc9855ce6d03db28f585ac56dcdb65d5 (diff)
Patch release 1.42.4 (#15998)
Re-store rrdvars on late dimensions (#15984) (cherry picked from commit 2d999d9ef7a43b02eb9f65228ba106bd1e07ab98) Co-authored-by: Emmanuel Vasilakis <mrzammler@mm.st>
-rw-r--r--database/rrd.h2
-rw-r--r--database/rrdcalc.c1
-rw-r--r--health/health.c2
3 files changed, 4 insertions, 1 deletions
diff --git a/database/rrd.h b/database/rrd.h
index d64f5904a5..11f3aa98ce 100644
--- a/database/rrd.h
+++ b/database/rrd.h
@@ -769,6 +769,8 @@ typedef enum __attribute__ ((__packed__)) rrdset_flags {
RRDSET_FLAG_UPSTREAM_SEND_VARIABLES = (1 << 26), // a custom variable has been updated and needs to be exposed to parent
RRDSET_FLAG_COLLECTION_FINISHED = (1 << 27), // when set, data collection is not available for this chart
+
+ RRDSET_FLAG_HAS_RRDCALC_LINKED = (1 << 28), // this chart has at least one rrdcal linked
} RRDSET_FLAGS;
#define rrdset_flag_check(st, flag) (__atomic_load_n(&((st)->flags), __ATOMIC_SEQ_CST) & (flag))
diff --git a/database/rrdcalc.c b/database/rrdcalc.c
index 8e41df8d65..398ddb32b3 100644
--- a/database/rrdcalc.c
+++ b/database/rrdcalc.c
@@ -316,6 +316,7 @@ static void rrdcalc_link_to_rrdset(RRDSET *st, RRDCALC *rc) {
rc->ae = ae;
health_alarm_log_add_entry(host, ae);
+ rrdset_flag_set(st, RRDSET_FLAG_HAS_RRDCALC_LINKED);
}
static void rrdcalc_unlink_from_rrdset(RRDCALC *rc, bool having_ll_wrlock) {
diff --git a/health/health.c b/health/health.c
index d94c33161d..27ae673d87 100644
--- a/health/health.c
+++ b/health/health.c
@@ -1004,7 +1004,7 @@ static void health_execute_delayed_initializations(RRDHOST *host) {
}
foreach_rrdcalctemplate_done(rt);
- if (health_variable_check(health_rrdvars, st, rd))
+ if (health_variable_check(health_rrdvars, st, rd) || rrdset_flag_check(st, RRDSET_FLAG_HAS_RRDCALC_LINKED))
rrdvar_store_for_chart(host, st);
}
rrddim_foreach_done(rd);