22
33#include "common.h"
44
5- /* Run service jobs every X seconds */
6- #define SERVICE_HEARTBEAT 10
7-
8- #define WORKER_JOB_CHILD_CHART_OBSOLETION_CHECK 1
9- #define WORKER_JOB_CLEANUP_OBSOLETE_CHARTS 2
10- #define WORKER_JOB_ARCHIVE_CHART 3
11- #define WORKER_JOB_ARCHIVE_CHART_DIMENSIONS 4
12- #define WORKER_JOB_ARCHIVE_DIMENSION 5
13- #define WORKER_JOB_CLEANUP_ORPHAN_HOSTS 6
14- #define WORKER_JOB_CLEANUP_OBSOLETE_CHARTS_ON_HOSTS 7
15- #define WORKER_JOB_FREE_HOST 9
16- #define WORKER_JOB_FREE_CHART 12
17- #define WORKER_JOB_FREE_DIMENSION 15
18- #define WORKER_JOB_PGC_MAIN_EVICT 16
19- #define WORKER_JOB_PGC_MAIN_FLUSH 17
20- #define WORKER_JOB_PGC_OPEN_EVICT 18
21- #define WORKER_JOB_PGC_OPEN_FLUSH 19
22-
235static bool svc_rrddim_obsolete_to_archive (RRDDIM * rd ) {
246 RRDSET * st = rd -> rrdset ;
257
@@ -32,7 +14,7 @@ static bool svc_rrddim_obsolete_to_archive(RRDDIM *rd) {
3214 else
3315 return false;
3416
35- worker_is_busy (WORKER_JOB_ARCHIVE_DIMENSION );
17+ worker_is_busy (UV_EVENT_ARCHIVE_DIMENSION );
3618
3719 if (rd -> rrd_memory_mode == RRD_DB_MODE_DBENGINE ) {
3820 if (!rrddim_finalize_collection_and_check_retention (rd )) {
@@ -41,7 +23,7 @@ static bool svc_rrddim_obsolete_to_archive(RRDDIM *rd) {
4123 }
4224 }
4325
44- worker_is_busy (WORKER_JOB_FREE_DIMENSION );
26+ worker_is_busy (UV_EVENT_FREE_DIMENSION );
4527 rrddim_free (st , rd );
4628 return true;
4729}
@@ -50,7 +32,7 @@ static inline bool svc_rrdset_archive_obsolete_dimensions(RRDSET *st, bool all_d
5032 if (!all_dimensions && !rrdset_flag_check (st , RRDSET_FLAG_OBSOLETE_DIMENSIONS ))
5133 return true;
5234
53- worker_is_busy (WORKER_JOB_ARCHIVE_CHART_DIMENSIONS );
35+ worker_is_busy (UV_EVENT_ARCHIVE_CHART_DIMENSIONS );
5436
5537 rrdset_flag_clear (st , RRDSET_FLAG_OBSOLETE_DIMENSIONS );
5638
@@ -69,14 +51,9 @@ static inline bool svc_rrdset_archive_obsolete_dimensions(RRDSET *st, bool all_d
6951 if (rd -> collector .last_collected_time .tv_sec + rrdset_free_obsolete_time_s < now ) {
7052 size_t references = dictionary_acquired_item_references (rd_dfe .item );
7153 if (references == 1 ) {
72- // netdata_log_info("Removing obsolete dimension 'host:%s/chart:%s/dim:%s'",
73- // rrdhost_hostname(st->rrdhost), rrdset_id(st), rrddim_id(rd));
7454 if (svc_rrddim_obsolete_to_archive (rd ))
7555 dim_archives ++ ;
7656 }
77- // else
78- // netdata_log_info("Cannot remove obsolete dimension 'host:%s/chart:%s/dim:%s'",
79- // rrdhost_hostname(st->rrdhost), rrdset_id(st), rrddim_id(rd));
8057 }
8158 }
8259 }
@@ -109,7 +86,7 @@ static inline void svc_rrdhost_cleanup_charts_marked_obsolete(RRDHOST *host) {
10986 if (!rrdhost_flag_check (host , RRDHOST_FLAG_PENDING_OBSOLETE_CHARTS |RRDHOST_FLAG_PENDING_OBSOLETE_DIMENSIONS ))
11087 return ;
11188
112- worker_is_busy (WORKER_JOB_CLEANUP_OBSOLETE_CHARTS );
89+ worker_is_busy (UV_EVENT_CLEANUP_OBSOLETE_CHARTS );
11390
11491 rrdhost_flag_clear (host , RRDHOST_FLAG_PENDING_OBSOLETE_CHARTS |RRDHOST_FLAG_PENDING_OBSOLETE_DIMENSIONS );
11592
@@ -140,7 +117,7 @@ static inline void svc_rrdhost_cleanup_charts_marked_obsolete(RRDHOST *host) {
140117 if (svc_rrdset_archive_obsolete_dimensions (st , true)) {
141118 full_archives ++ ;
142119
143- worker_is_busy (WORKER_JOB_FREE_CHART );
120+ worker_is_busy (UV_EVENT_FREE_CHART );
144121 rrdset_free (st );
145122 }
146123 else
@@ -170,16 +147,12 @@ void svc_rrdhost_obsolete_all_charts(RRDHOST *host) {
170147}
171148
172149static void svc_rrd_cleanup_obsolete_charts_from_all_hosts () {
173- worker_is_busy (WORKER_JOB_CLEANUP_OBSOLETE_CHARTS_ON_HOSTS );
150+ worker_is_busy (UV_EVENT_CLEANUP_OBSOLETE_CHARTS_ON_HOSTS );
174151
175152 rrd_rdlock ();
176153
177154 RRDHOST * host ;
178155 rrdhost_foreach_read (host ) {
179-
180- if (!service_running (SERVICE_MAINTENANCE ))
181- break ;
182-
183156 if (rrdhost_receiver_replicating_charts (host ) || rrdhost_sender_replicating_charts (host ))
184157 continue ;
185158
@@ -205,7 +178,7 @@ static void svc_rrd_cleanup_obsolete_charts_from_all_hosts() {
205178}
206179
207180static void svc_rrdhost_cleanup_orphan_hosts (RRDHOST * protected_host ) {
208- worker_is_busy (WORKER_JOB_CLEANUP_ORPHAN_HOSTS );
181+ worker_is_busy (UV_EVENT_CLEANUP_ORPHAN_HOSTS );
209182
210183 time_t now = now_realtime_sec ();
211184
@@ -233,7 +206,7 @@ static void svc_rrdhost_cleanup_orphan_hosts(RRDHOST *protected_host) {
233206 continue ;
234207 }
235208
236- worker_is_busy (WORKER_JOB_FREE_HOST );
209+ worker_is_busy (UV_EVENT_FREE_HOST );
237210
238211 if (delete ) {
239212 netdata_log_info ("Host '%s' with machine guid '%s' is archived, ephemeral clean up." , rrdhost_hostname (host ), host -> machine_guid );
@@ -248,62 +221,7 @@ static void svc_rrdhost_cleanup_orphan_hosts(RRDHOST *protected_host) {
248221 rrd_wrunlock ();
249222}
250223
251- static void service_main_cleanup (void * pptr )
252- {
253- struct netdata_static_thread * static_thread = CLEANUP_FUNCTION_GET_PTR (pptr );
254- if (!static_thread ) return ;
255-
256- static_thread -> enabled = NETDATA_MAIN_THREAD_EXITING ;
257-
258- worker_unregister ();
259-
260- static_thread -> enabled = NETDATA_MAIN_THREAD_EXITED ;
261- }
262-
263- /*
264- * The service thread.
265- */
266- void * service_main (void * ptr )
267- {
268- worker_register ("SERVICE" );
269- worker_register_job_name (WORKER_JOB_CHILD_CHART_OBSOLETION_CHECK , "child chart obsoletion check" );
270- worker_register_job_name (WORKER_JOB_CLEANUP_OBSOLETE_CHARTS , "cleanup obsolete charts" );
271- worker_register_job_name (WORKER_JOB_ARCHIVE_CHART , "archive chart" );
272- worker_register_job_name (WORKER_JOB_ARCHIVE_CHART_DIMENSIONS , "archive chart dimensions" );
273- worker_register_job_name (WORKER_JOB_ARCHIVE_DIMENSION , "archive dimension" );
274- worker_register_job_name (WORKER_JOB_CLEANUP_ORPHAN_HOSTS , "cleanup orphan hosts" );
275- worker_register_job_name (WORKER_JOB_CLEANUP_OBSOLETE_CHARTS_ON_HOSTS , "cleanup obsolete charts on all hosts" );
276- worker_register_job_name (WORKER_JOB_FREE_HOST , "free host" );
277- worker_register_job_name (WORKER_JOB_FREE_CHART , "free chart" );
278- worker_register_job_name (WORKER_JOB_FREE_DIMENSION , "free dimension" );
279- worker_register_job_name (WORKER_JOB_PGC_MAIN_EVICT , "main cache evictions" );
280- worker_register_job_name (WORKER_JOB_PGC_MAIN_FLUSH , "main cache flushes" );
281- worker_register_job_name (WORKER_JOB_PGC_OPEN_EVICT , "open cache evictions" );
282- worker_register_job_name (WORKER_JOB_PGC_OPEN_FLUSH , "open cache flushes" );
283-
284- CLEANUP_FUNCTION_REGISTER (service_main_cleanup ) cleanup_ptr = ptr ;
285-
286- heartbeat_t hb ;
287- heartbeat_init (& hb , USEC_PER_SEC );
288- usec_t step = USEC_PER_SEC * SERVICE_HEARTBEAT ;
289- usec_t real_step = USEC_PER_SEC ;
290-
291- netdata_log_debug (D_SYSTEM , "Service thread starts" );
292-
293- while (service_running (SERVICE_MAINTENANCE )) {
294- worker_is_idle ();
295- heartbeat_next (& hb );
296- if (real_step < step ) {
297- real_step += USEC_PER_SEC ;
298- continue ;
299- }
300- real_step = USEC_PER_SEC ;
301-
302- svc_rrd_cleanup_obsolete_charts_from_all_hosts ();
303-
304- if (service_running (SERVICE_MAINTENANCE ))
305- svc_rrdhost_cleanup_orphan_hosts (localhost );
306- }
307-
308- return NULL ;
224+ void run_maintenace () {
225+ svc_rrd_cleanup_obsolete_charts_from_all_hosts ();
226+ svc_rrdhost_cleanup_orphan_hosts (localhost );
309227}
0 commit comments