# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: rousskov@measurement-factory.com-20080911063257-\ # 58w6rg9djin58wgd # target_branch: file:///home/rousskov/programs/bazaar/repos/squid\ # /trunk/ # testament_sha1: b60983c5d2438f6e134a40be89e6fbaff98ba3e1 # timestamp: 2008-09-11 00:41:29 -0600 # message: Cleanup, the reconfigure part # base_revision_id: amosjeffries@squid-cache.org-20080910015634-\ # 2xvc2fymhl885rm6 # # Begin patch === modified file 'src/main.cc' --- src/main.cc 2008-08-09 06:24:33 +0000 +++ src/main.cc 2008-09-11 06:32:57 +0000 @@ -111,12 +111,14 @@ static volatile int shutdown_status = 0; static void mainRotate(void); -static void mainReconfigure(void); +static void mainReconfigureStart(void); +static void mainReconfigureFinish(void*); static void mainInitialize(void); static void usage(void); static void mainParseOptions(int argc, char *argv[]); static void sendSignal(void); static void serverConnectionsOpen(void); +static void serverConnectionsClose(void); static void watch_child(char **); static void setEffectiveUser(void); #if MEM_GEN_TRACE @@ -172,7 +174,7 @@ PROF_start(SignalEngine_checkEvents); if (do_reconfigure) { - mainReconfigure(); + mainReconfigureStart(); do_reconfigure = 0; } else if (do_rotate) { mainRotate(); @@ -629,7 +631,7 @@ peerSourceHashInit(); } -void +static void serverConnectionsClose(void) { assert(shutting_down || reconfiguring); @@ -658,11 +660,12 @@ } static void -mainReconfigure(void) +mainReconfigureStart(void) { debugs(1, 1, "Reconfiguring Squid Cache (version " << version_string << ")..."); reconfiguring = 1; - /* Already called serverConnectionsClose and ipcacheShutdownServers() */ + + // Initiate asynchronous closing sequence serverConnectionsClose(); icpConnectionClose(); #if USE_HTCP @@ -689,6 +692,15 @@ accessLogClose(); useragentLogClose(); refererCloseLog(); + + eventAdd("mainReconfigureFinish", &mainReconfigureFinish, NULL, 0, 1, + false); +} + +static void +mainReconfigureFinish(void *) { + debugs(1, 3, "finishing reconfiguring"); + errorClean(); enter_suid(); /* root to read config file */ parseConfigFile(ConfigFile); @@ -1065,8 +1077,6 @@ #endif eventAdd("memPoolCleanIdlePools", Mem::CleanIdlePools, NULL, 15.0, 1); - - eventAdd("commCheckHalfClosed", commCheckHalfClosed, NULL, 1.0, false); } configured_once = 1; @@ -1597,6 +1607,12 @@ static void SquidShutdown() { + /* XXX: This function is called after the main loop has quit, which + * means that no AsyncCalls would be called, including close handlers. + * TODO: We need to close/shut/free everything that needs calls before + * exiting the loop. + */ + #if USE_WIN32_SERVICE WIN32_svcstatusupdate(SERVICE_STOP_PENDING, 10000); #endif === modified file 'src/protos.h' --- src/protos.h 2008-09-03 04:40:31 +0000 +++ src/protos.h 2008-09-11 06:32:57 +0000 @@ -458,7 +458,6 @@ extern void refreshInit(void); extern const refresh_t *refreshLimits(const char *url); -extern void serverConnectionsClose(void); extern void shut_down(int); extern void rotate_logs(int); extern void reconfigure(int); # Begin bundle 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 ksFlZXpxJb/i7kinChIBq5OV4A==