X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=citadel%2Fhousekeeping.c;h=4de8e4baf497317e3ab23578755a7ab6474c4d05;hp=0ca383202c2bb1f27275e2d92cedb5f7d5a860f5;hb=b223424749db67c28961787ce6ae841387f4de46;hpb=9c1d6980160274408d2f280a4af327816e635eb1 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