3737 *
3838 *
3939 * IDENTIFICATION
40- * $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.529 2007/06/29 17:07:39 alvherre Exp $
40+ * $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.530 2007/07/01 18:28:41 tgl Exp $
4141 *
4242 * NOTES
4343 *
@@ -1242,7 +1242,8 @@ ServerLoop(void)
12421242}
12431243
12441244/* If we have lost the autovacuum launcher, try to start a new one */
1245- if ((AutoVacuumingActive ()|| start_autovac_launcher )&& AutoVacPID == 0 &&
1245+ if (AutoVacPID == 0 &&
1246+ (AutoVacuumingActive ()|| start_autovac_launcher )&&
12461247StartupPID == 0 && !FatalError && Shutdown == NoShutdown )
12471248{
12481249AutoVacPID = StartAutoVacLauncher ();
@@ -1873,11 +1874,14 @@ pmdie(SIGNAL_ARGS)
18731874ereport (LOG ,
18741875(errmsg ("received smart shutdown request" )));
18751876
1876- /* autovacuum workers are shut down immediately */
1877+ /* autovacuum workers aretold to shut down immediately */
18771878if (DLGetHead (BackendList ))
18781879SignalSomeChildren (SIGTERM , true);
1880+ /* and the autovac launcher too */
1881+ if (AutoVacPID != 0 )
1882+ signal_child (AutoVacPID ,SIGTERM );
18791883
1880- if (DLGetHead (BackendList ))
1884+ if (DLGetHead (BackendList )|| AutoVacPID != 0 )
18811885break ;/* let reaper() handle this */
18821886
18831887/*
@@ -1896,13 +1900,7 @@ pmdie(SIGNAL_ARGS)
18961900signal_child (PgArchPID ,SIGQUIT );
18971901/* Tell pgstat to shut down too; nothing left for it to do */
18981902if (PgStatPID != 0 )
1899- {
19001903signal_child (PgStatPID ,SIGQUIT );
1901- allow_immediate_pgstat_restart ();
1902- }
1903- /* Tell autovac launcher to shut down too */
1904- if (AutoVacPID != 0 )
1905- signal_child (AutoVacPID ,SIGTERM );
19061904break ;
19071905
19081906case SIGINT :
@@ -1919,13 +1917,15 @@ pmdie(SIGNAL_ARGS)
19191917ereport (LOG ,
19201918(errmsg ("received fast shutdown request" )));
19211919
1922- if (DLGetHead (BackendList ))
1920+ if (DLGetHead (BackendList )|| AutoVacPID != 0 )
19231921{
19241922if (!FatalError )
19251923{
19261924ereport (LOG ,
19271925(errmsg ("aborting any active transactions" )));
19281926SignalChildren (SIGTERM );
1927+ if (AutoVacPID != 0 )
1928+ signal_child (AutoVacPID ,SIGTERM );
19291929/* reaper() does the rest */
19301930}
19311931break ;
@@ -1955,13 +1955,7 @@ pmdie(SIGNAL_ARGS)
19551955signal_child (PgArchPID ,SIGQUIT );
19561956/* Tell pgstat to shut down too; nothing left for it to do */
19571957if (PgStatPID != 0 )
1958- {
19591958signal_child (PgStatPID ,SIGQUIT );
1960- allow_immediate_pgstat_restart ();
1961- }
1962- /* Tell autovac launcher to shut down too */
1963- if (AutoVacPID != 0 )
1964- signal_child (AutoVacPID ,SIGTERM );
19651959break ;
19661960
19671961case SIGQUIT :
@@ -1983,10 +1977,7 @@ pmdie(SIGNAL_ARGS)
19831977if (PgArchPID != 0 )
19841978signal_child (PgArchPID ,SIGQUIT );
19851979if (PgStatPID != 0 )
1986- {
19871980signal_child (PgStatPID ,SIGQUIT );
1988- allow_immediate_pgstat_restart ();
1989- }
19901981if (DLGetHead (BackendList ))
19911982SignalChildren (SIGQUIT );
19921983ExitPostmaster (0 );
@@ -2237,7 +2228,7 @@ reaper(SIGNAL_ARGS)
22372228
22382229if (Shutdown > NoShutdown )
22392230{
2240- if (DLGetHead (BackendList )|| StartupPID != 0 )
2231+ if (DLGetHead (BackendList )|| StartupPID != 0 || AutoVacPID != 0 )
22412232gotoreaper_done ;
22422233/* Start the bgwriter if not running */
22432234if (BgWriterPID == 0 )
@@ -2250,13 +2241,7 @@ reaper(SIGNAL_ARGS)
22502241signal_child (PgArchPID ,SIGQUIT );
22512242/* Tell pgstat to shut down too; nothing left for it to do */
22522243if (PgStatPID != 0 )
2253- {
22542244signal_child (PgStatPID ,SIGQUIT );
2255- allow_immediate_pgstat_restart ();
2256- }
2257- /* Tell autovac launcher to shut down too */
2258- if (AutoVacPID != 0 )
2259- signal_child (AutoVacPID ,SIGTERM );
22602245}
22612246
22622247reaper_done :