diff options
author | Costa Tsaousis <costa@netdata.cloud> | 2022-07-14 03:49:02 +0300 |
---|---|---|
committer | Costa Tsaousis <costa@netdata.cloud> | 2022-07-14 03:49:02 +0300 |
commit | de3a8137133df5eff1a72c789c22a8161b3c41ec (patch) | |
tree | e91021a211b1ea23368e62734b9a2d50c67106c0 | |
parent | 7769df5aacd48907e55310f7df9f1df3b9e98ab2 (diff) |
fix db rotation and garbage collection timings
-rw-r--r-- | database/rrdcontext.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/database/rrdcontext.c b/database/rrdcontext.c index 6d1e498707..18be5cedee 100644 --- a/database/rrdcontext.c +++ b/database/rrdcontext.c @@ -1990,11 +1990,11 @@ static inline usec_t rrdcontext_queued_dispatch_ut(RRDCONTEXT *rc, usec_t now_ut #define WORKER_JOB_CLEANUP 7 #define WORKER_JOB_CLEANUP_DELETE 8 -usec_t rrdcontext_last_cleanup_ut = 0; -usec_t rrdcontext_last_db_rotation_ut = 0; +usec_t rrdcontext_next_garbage_collect_ut = 0; +usec_t rrdcontext_next_db_rotation_ut = 0; void rrdcontext_db_rotation(void) { - rrdcontext_last_db_rotation_ut = now_realtime_usec(); + rrdcontext_next_db_rotation_ut = now_realtime_usec() + RRDCONTEXT_DELAY_AFTER_DB_ROTATION_SECS * USEC_PER_SEC; } static uint64_t rrdcontext_version_hash_with_callback( @@ -2064,7 +2064,7 @@ static void rrdcontext_recalculate_host_retention(RRDHOST *host, RRD_FLAGS reaso } static void rrdcontext_recalculate_retention(int job_id) { - rrdcontext_last_db_rotation_ut = 0; + rrdcontext_next_db_rotation_ut = 0; rrd_rdlock(); RRDHOST *host; rrdhost_foreach_read(host) { @@ -2120,7 +2120,7 @@ void *rrdcontext_main(void *ptr) { if(unlikely(rrdcontext_enabled == CONFIG_BOOLEAN_NO)) return NULL; - rrdcontext_last_cleanup_ut = now_realtime_usec(); + rrdcontext_next_garbage_collect_ut = now_realtime_usec() + RRDCONTEXT_CLEANUP_DELETED_EVERY_SECS * USEC_PER_SEC; worker_register("RRDCONTEXT"); worker_register_job_name(WORKER_JOB_HOSTS, "hosts"); @@ -2145,12 +2145,14 @@ void *rrdcontext_main(void *ptr) { usec_t now_ut = now_realtime_usec(); - if(now_ut < rrdcontext_last_db_rotation_ut + RRDCONTEXT_DELAY_AFTER_DB_ROTATION_SECS * USEC_PER_SEC) { + if(now_ut > rrdcontext_next_db_rotation_ut) { rrdcontext_recalculate_retention(WORKER_JOB_RETENTION); + rrdcontext_next_db_rotation_ut = 0; } - if(now_ut < rrdcontext_last_cleanup_ut + RRDCONTEXT_CLEANUP_DELETED_EVERY_SECS * USEC_PER_SEC) { + if(now_ut > rrdcontext_next_garbage_collect_ut) { rrdcontext_garbage_collect(); + rrdcontext_next_garbage_collect_ut = now_ut + RRDCONTEXT_CLEANUP_DELETED_EVERY_SECS * USEC_PER_SEC; } rrd_rdlock(); |