diff --git a/src/backend/access/gin/ginfast.c b/src/backend/access/gin/ginfast.c index cff6850ef8..e118cecb9a 100644 --- a/src/backend/access/gin/ginfast.c +++ b/src/backend/access/gin/ginfast.c @@ -812,7 +812,7 @@ ginInsertCleanup(GinState *ginstate, bool full_clean, */ LockPage(index, GIN_METAPAGE_BLKNO, ExclusiveLock); workMemory = - (IsAutoVacuumWorkerProcess() && autovacuum_work_mem != -1) ? + (AmAutoVacuumWorkerProcess() && autovacuum_work_mem != -1) ? autovacuum_work_mem : maintenance_work_mem; } else diff --git a/src/backend/access/gin/ginvacuum.c b/src/backend/access/gin/ginvacuum.c index aee6aab44a..b3f415e284 100644 --- a/src/backend/access/gin/ginvacuum.c +++ b/src/backend/access/gin/ginvacuum.c @@ -590,7 +590,7 @@ ginbulkdelete(IndexVacuumInfo *info, IndexBulkDeleteResult *stats, /* * and cleanup any pending inserts */ - ginInsertCleanup(&gvs.ginstate, !IsAutoVacuumWorkerProcess(), + ginInsertCleanup(&gvs.ginstate, !AmAutoVacuumWorkerProcess(), false, true, stats); } @@ -701,7 +701,7 @@ ginvacuumcleanup(IndexVacuumInfo *info, IndexBulkDeleteResult *stats) */ if (info->analyze_only) { - if (IsAutoVacuumWorkerProcess()) + if (AmAutoVacuumWorkerProcess()) { initGinState(&ginstate, index); ginInsertCleanup(&ginstate, false, true, true, stats); @@ -717,7 +717,7 @@ ginvacuumcleanup(IndexVacuumInfo *info, IndexBulkDeleteResult *stats) { stats = (IndexBulkDeleteResult *) palloc0(sizeof(IndexBulkDeleteResult)); initGinState(&ginstate, index); - ginInsertCleanup(&ginstate, !IsAutoVacuumWorkerProcess(), + ginInsertCleanup(&ginstate, !AmAutoVacuumWorkerProcess(), false, true, stats); } diff --git a/src/backend/access/heap/vacuumlazy.c b/src/backend/access/heap/vacuumlazy.c index fa56480808..5acea4a43a 100644 --- a/src/backend/access/heap/vacuumlazy.c +++ b/src/backend/access/heap/vacuumlazy.c @@ -307,7 +307,7 @@ heap_vacuum_rel(Relation rel, VacuumParams *params, char **indnames = NULL; verbose = (params->options & VACOPT_VERBOSE) != 0; - instrument = (verbose || (IsAutoVacuumWorkerProcess() && + instrument = (verbose || (AmAutoVacuumWorkerProcess() && params->log_min_duration >= 0)); if (instrument) { @@ -3087,7 +3087,7 @@ static int dead_items_max_items(LVRelState *vacrel) { int64 max_items; - int vac_work_mem = IsAutoVacuumWorkerProcess() && + int vac_work_mem = AmAutoVacuumWorkerProcess() && autovacuum_work_mem != -1 ? autovacuum_work_mem : maintenance_work_mem; diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c index a03495d6c9..d105d2fad7 100644 --- a/src/backend/commands/analyze.c +++ b/src/backend/commands/analyze.c @@ -351,7 +351,7 @@ do_analyze_rel(Relation onerel, VacuumParams *params, save_nestlevel = NewGUCNestLevel(); /* measure elapsed time iff autovacuum logging requires it */ - if (IsAutoVacuumWorkerProcess() && params->log_min_duration >= 0) + if (AmAutoVacuumWorkerProcess() && params->log_min_duration >= 0) { if (track_io_timing) { @@ -729,7 +729,7 @@ do_analyze_rel(Relation onerel, VacuumParams *params, vac_close_indexes(nindexes, Irel, NoLock); /* Log the action if appropriate */ - if (IsAutoVacuumWorkerProcess() && params->log_min_duration >= 0) + if (AmAutoVacuumWorkerProcess() && params->log_min_duration >= 0) { TimestampTz endtime = GetCurrentTimestamp(); diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index 64da848627..e40cef6566 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -564,7 +564,7 @@ vacuum(List *relations, VacuumParams *params, BufferAccessStrategy bstrategy, else { Assert(params->options & VACOPT_ANALYZE); - if (IsAutoVacuumWorkerProcess()) + if (AmAutoVacuumWorkerProcess()) use_own_xacts = true; else if (in_outer_xact) use_own_xacts = false; @@ -809,7 +809,7 @@ vacuum_open_relation(Oid relid, RangeVar *relation, bits32 options, * statements in the permission checks; otherwise, only log if the caller * so requested. */ - if (!IsAutoVacuumWorkerProcess()) + if (!AmAutoVacuumWorkerProcess()) elevel = WARNING; else if (verbose) elevel = LOG; @@ -896,7 +896,7 @@ expand_vacuum_rel(VacuumRelation *vrel, MemoryContext vac_context, * Since autovacuum workers supply OIDs when calling vacuum(), no * autovacuum worker should reach this code. */ - Assert(!IsAutoVacuumWorkerProcess()); + Assert(!AmAutoVacuumWorkerProcess()); /* * We transiently take AccessShareLock to protect the syscache lookup @@ -2336,7 +2336,7 @@ vacuum_delay_point(void) * [autovacuum_]vacuum_cost_delay to take effect while a table is being * vacuumed or analyzed. */ - if (ConfigReloadPending && IsAutoVacuumWorkerProcess()) + if (ConfigReloadPending && AmAutoVacuumWorkerProcess()) { ConfigReloadPending = false; ProcessConfigFile(PGC_SIGHUP); diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c index 2ab344c1f8..3ebe8e91a0 100644 --- a/src/backend/postmaster/autovacuum.c +++ b/src/backend/postmaster/autovacuum.c @@ -136,10 +136,6 @@ int Log_autovacuum_min_duration = 600000; #define MIN_AUTOVAC_SLEEPTIME 100.0 /* milliseconds */ #define MAX_AUTOVAC_SLEEPTIME 300 /* seconds */ -/* Flags to tell if we are in an autovacuum process */ -static bool am_autovacuum_launcher = false; -static bool am_autovacuum_worker = false; - /* * Variables to save the cost-related storage parameters for the current * relation being vacuumed by this autovacuum worker. Using these, we can @@ -436,8 +432,6 @@ AutoVacLauncherMain(int argc, char *argv[]) { sigjmp_buf local_sigjmp_buf; - am_autovacuum_launcher = true; - MyBackendType = B_AUTOVAC_LAUNCHER; init_ps_display(NULL); @@ -1491,8 +1485,6 @@ AutoVacWorkerMain(int argc, char *argv[]) sigjmp_buf local_sigjmp_buf; Oid dbid; - am_autovacuum_worker = true; - MyBackendType = B_AUTOVAC_WORKER; init_ps_display(NULL); @@ -3352,24 +3344,6 @@ autovac_init(void) errhint("Enable the \"track_counts\" option."))); } -/* - * IsAutoVacuum functions - * Return whether this is either a launcher autovacuum process or a worker - * process. - */ -bool -IsAutoVacuumLauncherProcess(void) -{ - return am_autovacuum_launcher; -} - -bool -IsAutoVacuumWorkerProcess(void) -{ - return am_autovacuum_worker; -} - - /* * AutoVacuumShmemSize * Compute space needed for autovacuum-related shared memory diff --git a/src/backend/postmaster/bgworker.c b/src/backend/postmaster/bgworker.c index 67f92c24db..d8e89de749 100644 --- a/src/backend/postmaster/bgworker.c +++ b/src/backend/postmaster/bgworker.c @@ -731,8 +731,6 @@ BackgroundWorkerMain(void) if (worker == NULL) elog(FATAL, "unable to find bgworker entry"); - IsBackgroundWorker = true; - MyBackendType = B_BG_WORKER; init_ps_display(worker->bgw_name); diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index cad5987bcb..5931806746 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -5000,9 +5000,6 @@ SubPostmasterMain(int argc, char *argv[]) } if (strcmp(argv[1], "--forkbgworker") == 0) { - /* do this as early as possible; in particular, before InitProcess() */ - IsBackgroundWorker = true; - /* Restore basic shared memory pointers */ InitShmemAccess(UsedShmemSegAddr); diff --git a/src/backend/replication/logical/slotsync.c b/src/backend/replication/logical/slotsync.c index 8ecb85b86a..ad0fc6a04b 100644 --- a/src/backend/replication/logical/slotsync.c +++ b/src/backend/replication/logical/slotsync.c @@ -113,9 +113,6 @@ static long sleep_ms = MIN_SLOTSYNC_WORKER_NAPTIME_MS; /* The restart interval for slot sync work used by postmaster */ #define SLOTSYNC_RESTART_INTERVAL_SEC 10 -/* Flag to tell if we are in a slot sync worker process */ -static bool am_slotsync_worker = false; - /* * Flag to tell if we are syncing replication slots. Unlike the 'syncing' flag * in SlotSyncCtxStruct, this flag is true only if the current process is @@ -491,7 +488,7 @@ synchronize_one_slot(RemoteSlot *remote_slot, Oid remote_dbid) latestFlushPtr = GetStandbyFlushRecPtr(NULL); if (remote_slot->confirmed_lsn > latestFlushPtr) { - ereport(am_slotsync_worker ? LOG : ERROR, + ereport(AmLogicalSlotSyncWorkerProcess() ? LOG : ERROR, errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), errmsg("skipping slot synchronization as the received slot sync" " LSN %X/%X for slot \"%s\" is ahead of the standby position %X/%X", @@ -1114,8 +1111,6 @@ ReplSlotSyncWorkerMain(int argc, char *argv[]) sigjmp_buf local_sigjmp_buf; StringInfoData app_name; - am_slotsync_worker = true; - MyBackendType = B_SLOTSYNC_WORKER; init_ps_display(NULL); @@ -1438,15 +1433,6 @@ IsSyncingReplicationSlots(void) return syncing_slots; } -/* - * Is current process a slot sync worker? - */ -bool -IsLogicalSlotSyncWorker(void) -{ - return am_slotsync_worker; -} - /* * Amount of shared memory required for slot synchronization. */ diff --git a/src/backend/statistics/extended_stats.c b/src/backend/statistics/extended_stats.c index c5461514d8..135151a272 100644 --- a/src/backend/statistics/extended_stats.c +++ b/src/backend/statistics/extended_stats.c @@ -173,7 +173,7 @@ BuildRelationExtStatistics(Relation onerel, bool inh, double totalrows, natts, vacattrstats); if (!stats) { - if (!IsAutoVacuumWorkerProcess()) + if (!AmAutoVacuumWorkerProcess()) ereport(WARNING, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), errmsg("statistics object \"%s.%s\" could not be computed for relation \"%s.%s\"", diff --git a/src/backend/storage/ipc/ipc.c b/src/backend/storage/ipc/ipc.c index 2681e4cdff..b06e4b8452 100644 --- a/src/backend/storage/ipc/ipc.c +++ b/src/backend/storage/ipc/ipc.c @@ -136,7 +136,7 @@ proc_exit(int code) */ char gprofDirName[32]; - if (IsAutoVacuumWorkerProcess()) + if (AmAutoVacuumWorkerProcess()) snprintf(gprofDirName, 32, "gprof/avworker"); else snprintf(gprofDirName, 32, "gprof/%d", (int) getpid()); diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c index 1867fff9cd..1949d14965 100644 --- a/src/backend/storage/lmgr/proc.c +++ b/src/backend/storage/lmgr/proc.c @@ -42,7 +42,6 @@ #include "replication/slot.h" #include "replication/slotsync.h" #include "replication/syncrep.h" -#include "replication/walsender.h" #include "storage/condition_variable.h" #include "storage/ipc.h" #include "storage/lmgr.h" @@ -310,11 +309,11 @@ InitProcess(void) elog(ERROR, "you already exist"); /* Decide which list should supply our PGPROC. */ - if (IsAnyAutoVacuumProcess()) + if (AmAutoVacuumLauncherProcess() || AmAutoVacuumWorkerProcess()) procgloballist = &ProcGlobal->autovacFreeProcs; - else if (IsBackgroundWorker) + else if (AmBackgroundWorkerProcess()) procgloballist = &ProcGlobal->bgworkerFreeProcs; - else if (am_walsender) + else if (AmWalSenderProcess()) procgloballist = &ProcGlobal->walsenderFreeProcs; else procgloballist = &ProcGlobal->freeProcs; @@ -344,7 +343,7 @@ InitProcess(void) * in the autovacuum case? */ SpinLockRelease(ProcStructLock); - if (am_walsender) + if (AmWalSenderProcess()) ereport(FATAL, (errcode(ERRCODE_TOO_MANY_CONNECTIONS), errmsg("number of requested standby connections exceeds max_wal_senders (currently %d)", @@ -370,8 +369,8 @@ InitProcess(void) * Slot sync worker also does not participate in it, see comments atop * 'struct bkend' in postmaster.c. */ - if (IsUnderPostmaster && !IsAutoVacuumLauncherProcess() && - !IsLogicalSlotSyncWorker()) + if (IsUnderPostmaster && !AmAutoVacuumLauncherProcess() && + !AmLogicalSlotSyncWorkerProcess()) MarkPostmasterChildActive(); /* @@ -391,11 +390,11 @@ InitProcess(void) MyProc->databaseId = InvalidOid; MyProc->roleId = InvalidOid; MyProc->tempNamespaceId = InvalidOid; - MyProc->isBackgroundWorker = IsBackgroundWorker; + MyProc->isBackgroundWorker = AmBackgroundWorkerProcess(); MyProc->delayChkptFlags = 0; MyProc->statusFlags = 0; /* NB -- autovac launcher intentionally does not set IS_AUTOVACUUM */ - if (IsAutoVacuumWorkerProcess()) + if (AmAutoVacuumWorkerProcess()) MyProc->statusFlags |= PROC_IS_AUTOVACUUM; MyProc->lwWaiting = LW_WS_NOT_WAITING; MyProc->lwWaitMode = 0; @@ -587,7 +586,7 @@ InitAuxiliaryProcess(void) MyProc->databaseId = InvalidOid; MyProc->roleId = InvalidOid; MyProc->tempNamespaceId = InvalidOid; - MyProc->isBackgroundWorker = IsBackgroundWorker; + MyProc->isBackgroundWorker = AmBackgroundWorkerProcess(); MyProc->delayChkptFlags = 0; MyProc->statusFlags = 0; MyProc->lwWaiting = LW_WS_NOT_WAITING; @@ -951,8 +950,8 @@ ProcKill(int code, Datum arg) * Slot sync worker is also not a postmaster child, so skip this shared * memory related processing here. */ - if (IsUnderPostmaster && !IsAutoVacuumLauncherProcess() && - !IsLogicalSlotSyncWorker()) + if (IsUnderPostmaster && !AmAutoVacuumLauncherProcess() && + !AmLogicalSlotSyncWorkerProcess()) MarkPostmasterChildInactive(); /* wake autovac launcher if needed -- see comments in FreeWorkerInfo */ diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 59ab812d2e..aec1b19442 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -3259,7 +3259,7 @@ ProcessInterrupts(void) ereport(FATAL, (errcode(ERRCODE_QUERY_CANCELED), errmsg("canceling authentication due to timeout"))); - else if (IsAutoVacuumWorkerProcess()) + else if (AmAutoVacuumWorkerProcess()) ereport(FATAL, (errcode(ERRCODE_ADMIN_SHUTDOWN), errmsg("terminating autovacuum process due to administrator command"))); @@ -3278,7 +3278,7 @@ ProcessInterrupts(void) */ proc_exit(1); } - else if (IsBackgroundWorker) + else if (AmBackgroundWorkerProcess()) ereport(FATAL, (errcode(ERRCODE_ADMIN_SHUTDOWN), errmsg("terminating background worker \"%s\" due to administrator command", @@ -3378,7 +3378,7 @@ ProcessInterrupts(void) (errcode(ERRCODE_QUERY_CANCELED), errmsg("canceling statement due to statement timeout"))); } - if (IsAutoVacuumWorkerProcess()) + if (AmAutoVacuumWorkerProcess()) { LockErrorCleanup(); ereport(ERROR, diff --git a/src/backend/utils/activity/pgstat_relation.c b/src/backend/utils/activity/pgstat_relation.c index 111050725a..b20a60b5a8 100644 --- a/src/backend/utils/activity/pgstat_relation.c +++ b/src/backend/utils/activity/pgstat_relation.c @@ -246,7 +246,7 @@ pgstat_report_vacuum(Oid tableoid, bool shared, */ tabentry->ins_since_vacuum = 0; - if (IsAutoVacuumWorkerProcess()) + if (AmAutoVacuumWorkerProcess()) { tabentry->last_autovacuum_time = ts; tabentry->autovacuum_count++; @@ -337,7 +337,7 @@ pgstat_report_analyze(Relation rel, if (resetcounter) tabentry->mod_since_analyze = 0; - if (IsAutoVacuumWorkerProcess()) + if (AmAutoVacuumWorkerProcess()) { tabentry->last_autoanalyze_time = GetCurrentTimestamp(); tabentry->autoanalyze_count++; diff --git a/src/backend/utils/init/globals.c b/src/backend/utils/init/globals.c index aea95c8a69..5b536ac50d 100644 --- a/src/backend/utils/init/globals.c +++ b/src/backend/utils/init/globals.c @@ -115,7 +115,6 @@ pid_t PostmasterPid = 0; bool IsPostmasterEnvironment = false; bool IsUnderPostmaster = false; bool IsBinaryUpgrade = false; -bool IsBackgroundWorker = false; bool ExitOnAnyError = false; diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c index 77fd804756..ad6ab45c67 100644 --- a/src/backend/utils/init/miscinit.c +++ b/src/backend/utils/init/miscinit.c @@ -841,8 +841,8 @@ InitializeSessionUserIdStandalone(void) * This function should only be called in single-user mode, in autovacuum * workers, in slot sync worker and in background workers. */ - Assert(!IsUnderPostmaster || IsAutoVacuumWorkerProcess() || - IsLogicalSlotSyncWorker() || IsBackgroundWorker); + Assert(!IsUnderPostmaster || AmAutoVacuumWorkerProcess() || + AmLogicalSlotSyncWorkerProcess() || AmBackgroundWorkerProcess()); /* call only once */ Assert(!OidIsValid(AuthenticatedUserId)); diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c index c49c048441..6a320aaedb 100644 --- a/src/backend/utils/init/postinit.c +++ b/src/backend/utils/init/postinit.c @@ -346,7 +346,7 @@ CheckMyDatabase(const char *name, bool am_superuser, bool override_allow_connect * * We do not enforce them for autovacuum worker processes either. */ - if (IsUnderPostmaster && !IsAutoVacuumWorkerProcess()) + if (IsUnderPostmaster && !AmAutoVacuumWorkerProcess()) { /* * Check that the database is currently allowing connections. @@ -828,7 +828,7 @@ InitPostgres(const char *in_dbname, Oid dboid, before_shmem_exit(ShutdownPostgres, 0); /* The autovacuum launcher is done here */ - if (IsAutoVacuumLauncherProcess()) + if (AmAutoVacuumLauncherProcess()) { /* report this backend in the PgBackendStatus array */ pgstat_bestart(); @@ -873,7 +873,7 @@ InitPostgres(const char *in_dbname, Oid dboid, * process, we use a fixed ID, otherwise we figure it out from the * authenticated user name. */ - if (bootstrap || IsAutoVacuumWorkerProcess() || IsLogicalSlotSyncWorker()) + if (bootstrap || AmAutoVacuumWorkerProcess() || AmLogicalSlotSyncWorkerProcess()) { InitializeSessionUserIdStandalone(); am_superuser = true; @@ -889,7 +889,7 @@ InitPostgres(const char *in_dbname, Oid dboid, errhint("You should immediately run CREATE USER \"%s\" SUPERUSER;.", username != NULL ? username : "postgres"))); } - else if (IsBackgroundWorker) + else if (AmBackgroundWorkerProcess()) { if (username == NULL && !OidIsValid(useroid)) { diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h index 712f4ad68a..f900da6157 100644 --- a/src/include/miscadmin.h +++ b/src/include/miscadmin.h @@ -165,7 +165,6 @@ do { \ extern PGDLLIMPORT pid_t PostmasterPid; extern PGDLLIMPORT bool IsPostmasterEnvironment; extern PGDLLIMPORT bool IsUnderPostmaster; -extern PGDLLIMPORT bool IsBackgroundWorker; extern PGDLLIMPORT bool IsBinaryUpgrade; extern PGDLLIMPORT bool ExitOnAnyError; @@ -369,6 +368,11 @@ typedef enum BackendType extern PGDLLIMPORT BackendType MyBackendType; +#define AmAutoVacuumLauncherProcess() (MyBackendType == B_AUTOVAC_LAUNCHER) +#define AmAutoVacuumWorkerProcess() (MyBackendType == B_AUTOVAC_WORKER) +#define AmBackgroundWorkerProcess() (MyBackendType == B_BG_WORKER) +#define AmWalSenderProcess() (MyBackendType == B_WAL_SENDER) +#define AmLogicalSlotSyncWorkerProcess() (MyBackendType == B_SLOTSYNC_WORKER) #define AmArchiverProcess() (MyBackendType == B_ARCHIVER) #define AmBackgroundWriterProcess() (MyBackendType == B_BG_WRITER) #define AmCheckpointerProcess() (MyBackendType == B_CHECKPOINTER) diff --git a/src/include/postmaster/autovacuum.h b/src/include/postmaster/autovacuum.h index 1994aedef0..80cf4cdd96 100644 --- a/src/include/postmaster/autovacuum.h +++ b/src/include/postmaster/autovacuum.h @@ -49,11 +49,6 @@ extern PGDLLIMPORT int Log_autovacuum_min_duration; /* Status inquiry functions */ extern bool AutoVacuumingActive(void); -extern bool IsAutoVacuumLauncherProcess(void); -extern bool IsAutoVacuumWorkerProcess(void); - -#define IsAnyAutoVacuumProcess() \ - (IsAutoVacuumLauncherProcess() || IsAutoVacuumWorkerProcess()) /* Functions to start autovacuum process, called from postmaster */ extern void autovac_init(void); diff --git a/src/include/replication/slotsync.h b/src/include/replication/slotsync.h index 726d65f9b6..dca57c5020 100644 --- a/src/include/replication/slotsync.h +++ b/src/include/replication/slotsync.h @@ -34,7 +34,6 @@ extern int StartSlotSyncWorker(void); extern void ShutDownSlotSync(void); extern bool SlotSyncWorkerCanRestart(void); extern bool IsSyncingReplicationSlots(void); -extern bool IsLogicalSlotSyncWorker(void); extern Size SlotSyncShmemSize(void); extern void SlotSyncShmemInit(void); extern void SyncReplicationSlots(WalReceiverConn *wrconn);