From b223424749db67c28961787ce6ae841387f4de46 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Sat, 6 Mar 2021 15:06:46 -0500 Subject: [PATCH] Simplified disable_housekeeping --- citadel/housekeeping.c | 61 +++++++++++++----------------------------- 1 file changed, 18 insertions(+), 43 deletions(-) diff --git a/citadel/housekeeping.c b/citadel/housekeeping.c index 0ca383202..4de8e4baf 100644 --- a/citadel/housekeeping.c +++ b/citadel/housekeeping.c @@ -92,12 +92,18 @@ void keep_an_eye_on_memory_usage(void) { * instance to run at a time. */ static int housekeeping_in_progress = 0; +static int housekeeping_disabled = 0; static time_t last_timer = 0L; + void do_housekeeping(void) { int do_housekeeping_now = 0; int do_perminute_housekeeping_now = 0; time_t now; + if (housekeeping_disabled) { + return; + } + /* * We do it this way instead of wrapping the whole loop in an * S_HOUSEKEEPING critical section because it eliminates the need to @@ -161,52 +167,21 @@ void do_housekeeping(void) { void CtdlDisableHouseKeeping(void) { - int ActiveBackgroundJobs; - int do_housekeeping_now = 0; - struct CitContext *nptr; - int nContexts, i; - -retry_block_housekeeping: - syslog(LOG_INFO, "housekeeping: trying to disable services"); - begin_critical_section(S_HOUSEKEEPING); - if (housekeeping_in_progress == 0) { - do_housekeeping_now = 1; - housekeeping_in_progress = 1; - } - end_critical_section(S_HOUSEKEEPING); - if (do_housekeeping_now == 0) { - usleep(1000000); - goto retry_block_housekeeping; - } - - syslog(LOG_INFO, "housekeeping: checking for running server jobs"); + syslog(LOG_INFO, "housekeeping: trying to disable"); + while ( (!housekeeping_disabled) && (!server_shutting_down) && (!housekeeping_in_progress) ) { -retry_wait_for_contexts: - /* So that we don't keep the context list locked for a long time - * we create a copy of it first - */ - ActiveBackgroundJobs = 0; - nptr = CtdlGetContextArray(&nContexts) ; - if (nptr) - { - for (i=0; i