mirror of
https://github.com/postgres/postgres.git
synced 2025-09-03 15:22:11 +03:00
Change the autovacuum launcher to read pg_database directly, rather than
via the "flat files" facility. This requires making it enough like a backend to be able to run transactions; it's no longer an "auxiliary process" but more like the autovacuum worker processes. Also, its signal handling has to be brought into line with backends/workers. In particular, since it now has to handle procsignal.c processing, the special autovac-launcher-only signal conditions are moved to SIGUSR2. Alvaro, with some cleanup from Tom
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/utils/init/globals.c,v 1.109 2009/08/28 18:23:53 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/utils/init/globals.c,v 1.110 2009/08/31 19:41:00 tgl Exp $
|
||||
*
|
||||
* NOTES
|
||||
* Globals used all over the place should be declared here and not
|
||||
@@ -100,8 +100,8 @@ int maintenance_work_mem = 16384;
|
||||
|
||||
/*
|
||||
* Primary determinants of sizes of shared-memory structures. MaxBackends is
|
||||
* MaxConnections + autovacuum_max_workers (it is computed by the GUC assign
|
||||
* hook):
|
||||
* MaxConnections + autovacuum_max_workers + 1 (it is computed by the GUC
|
||||
* assign hooks for those variables):
|
||||
*/
|
||||
int NBuffers = 1000;
|
||||
int MaxBackends = 100;
|
||||
|
@@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/utils/init/postinit.c,v 1.195 2009/08/29 19:26:51 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/utils/init/postinit.c,v 1.196 2009/08/31 19:41:00 tgl Exp $
|
||||
*
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@@ -460,7 +460,9 @@ BaseInit(void)
|
||||
* name can be returned to the caller in out_dbname. If out_dbname isn't
|
||||
* NULL, it must point to a buffer of size NAMEDATALEN.
|
||||
*
|
||||
* In bootstrap mode no parameters are used.
|
||||
* In bootstrap mode no parameters are used. The autovacuum launcher process
|
||||
* doesn't use any parameters either, because it only goes far enough to be
|
||||
* able to read pg_database; it doesn't connect to any particular database.
|
||||
*
|
||||
* The return value indicates whether the userID is a superuser. (That
|
||||
* can only be tested inside a transaction, so we want to do it during
|
||||
@@ -537,6 +539,12 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username,
|
||||
if (!bootstrap)
|
||||
pgstat_initialize();
|
||||
|
||||
/*
|
||||
* Load relcache entries for the shared system catalogs. This must
|
||||
* create at least an entry for pg_database.
|
||||
*/
|
||||
RelationCacheInitializePhase2();
|
||||
|
||||
/*
|
||||
* Set up process-exit callback to do pre-shutdown cleanup. This has to
|
||||
* be after we've initialized all the low-level modules like the buffer
|
||||
@@ -548,10 +556,17 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username,
|
||||
*/
|
||||
on_shmem_exit(ShutdownPostgres, 0);
|
||||
|
||||
/* The autovacuum launcher is done here */
|
||||
if (IsAutoVacuumLauncherProcess())
|
||||
return true; /* result doesn't matter */
|
||||
|
||||
/*
|
||||
* Start a new transaction here before first access to db, and get a
|
||||
* snapshot. We don't have a use for the snapshot itself, but we're
|
||||
* interested in the secondary effect that it sets RecentGlobalXmin.
|
||||
* (This is critical for anything that reads heap pages, because HOT
|
||||
* may decide to prune them even if the process doesn't attempt to
|
||||
* modify any tuples.)
|
||||
*/
|
||||
if (!bootstrap)
|
||||
{
|
||||
@@ -559,12 +574,6 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username,
|
||||
(void) GetTransactionSnapshot();
|
||||
}
|
||||
|
||||
/*
|
||||
* Load relcache entries for the shared system catalogs. This must
|
||||
* create at least an entry for pg_database.
|
||||
*/
|
||||
RelationCacheInitializePhase2();
|
||||
|
||||
/*
|
||||
* Set up the global variables holding database id and default tablespace.
|
||||
* But note we won't actually try to touch the database just yet.
|
||||
|
Reference in New Issue
Block a user