diff options
Diffstat (limited to 'src/health')
-rw-r--r-- | src/health/health_event_loop.c | 1 | ||||
-rw-r--r-- | src/health/rrdcalc.c | 11 | ||||
-rw-r--r-- | src/health/rrdcalc.h | 2 |
3 files changed, 14 insertions, 0 deletions
diff --git a/src/health/health_event_loop.c b/src/health/health_event_loop.c index 6a142cac07..2a1dd721b4 100644 --- a/src/health/health_event_loop.c +++ b/src/health/health_event_loop.c @@ -287,6 +287,7 @@ static void health_event_loop(void) { if (unlikely(rc->rrdset && rc->status != RRDCALC_STATUS_REMOVED && rrdset_flag_check(rc->rrdset, RRDSET_FLAG_OBSOLETE) && now > (rc->rrdset->last_collected_time.tv_sec + 60))) { + if (!rrdcalc_isrepeating(rc)) { worker_is_busy(WORKER_HEALTH_JOB_ALARM_LOG_ENTRY); time_t now_tmp = now_realtime_sec(); diff --git a/src/health/rrdcalc.c b/src/health/rrdcalc.c index 445e61b808..e16c118991 100644 --- a/src/health/rrdcalc.c +++ b/src/health/rrdcalc.c @@ -463,6 +463,17 @@ void rrdcalc_delete_all(RRDHOST *host) { dictionary_flush(host->rrdcalc_root_index); } +void rrdcalc_child_disconnected(RRDHOST *host) { + rrdcalc_delete_all(host); + + rrdhost_flag_clear(host, RRDHOST_FLAG_PENDING_HEALTH_INITIALIZATION); + RRDSET *st; + rrdset_foreach_read(st, host) { + rrdset_flag_clear(st, RRDSET_FLAG_PENDING_HEALTH_INITIALIZATION); + } + rrdset_foreach_done(st); +} + void rrd_alert_match_cleanup(struct rrd_alert_match *am) { if(am->is_template) string_freez(am->on.context); diff --git a/src/health/rrdcalc.h b/src/health/rrdcalc.h index 5c998b310d..f8a58aad5f 100644 --- a/src/health/rrdcalc.h +++ b/src/health/rrdcalc.h @@ -143,4 +143,6 @@ void rrdcalc_unlink_and_delete(RRDHOST *host, RRDCALC *rc, bool having_ll_wrlock #define RRDCALC_VAR_LABEL "${label:" #define RRDCALC_VAR_LABEL_LEN (sizeof(RRDCALC_VAR_LABEL)-1) +void rrdcalc_child_disconnected(RRDHOST *host); + #endif //NETDATA_RRDCALC_H |