diff options
author | Heikki Linnakangas | 2023-12-03 14:39:18 +0000 |
---|---|---|
committer | Heikki Linnakangas | 2023-12-03 14:39:18 +0000 |
commit | fd5e8b440dfd633be74e3dd3382d4a9038dba24f (patch) | |
tree | 18777d875424975c85d7e0e416f527e220a1d127 /src/backend/postmaster | |
parent | 388491f1e5e63fe97c7cca26d18b64321973d423 (diff) |
Refactor how InitProcess is called
The order of process initialization steps is now more consistent
between !EXEC_BACKEND and EXEC_BACKEND modes. InitProcess() is called
at the same place in either mode. We can now also move the
AttachSharedMemoryStructs() call into InitProcess() itself. This
reduces the number of "#ifdef EXEC_BACKEND" blocks.
Reviewed-by: Tristan Partin, Andres Freund, Alexander Lakhin
Discussion: https://www.postgresql.org/message-id/[email protected]
Diffstat (limited to 'src/backend/postmaster')
-rw-r--r-- | src/backend/postmaster/autovacuum.c | 16 | ||||
-rw-r--r-- | src/backend/postmaster/auxprocess.c | 5 | ||||
-rw-r--r-- | src/backend/postmaster/bgworker.c | 8 | ||||
-rw-r--r-- | src/backend/postmaster/postmaster.c | 45 |
4 files changed, 13 insertions, 61 deletions
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c index 86a3b3d8be2..2f54485c217 100644 --- a/src/backend/postmaster/autovacuum.c +++ b/src/backend/postmaster/autovacuum.c @@ -476,14 +476,10 @@ AutoVacLauncherMain(int argc, char *argv[]) pqsignal(SIGCHLD, SIG_DFL); /* - * Create a per-backend PGPROC struct in shared memory, except in the - * EXEC_BACKEND case where this was done in SubPostmasterMain. We must do - * this before we can use LWLocks (and in the EXEC_BACKEND case we already - * had to do some stuff with LWLocks). + * Create a per-backend PGPROC struct in shared memory. We must do this + * before we can use LWLocks or access any shared memory. */ -#ifndef EXEC_BACKEND InitProcess(); -#endif /* Early initialization */ BaseInit(); @@ -1548,14 +1544,10 @@ AutoVacWorkerMain(int argc, char *argv[]) pqsignal(SIGCHLD, SIG_DFL); /* - * Create a per-backend PGPROC struct in shared memory, except in the - * EXEC_BACKEND case where this was done in SubPostmasterMain. We must do - * this before we can use LWLocks (and in the EXEC_BACKEND case we already - * had to do some stuff with LWLocks). + * Create a per-backend PGPROC struct in shared memory. We must do this + * before we can use LWLocks or access any shared memory. */ -#ifndef EXEC_BACKEND InitProcess(); -#endif /* Early initialization */ BaseInit(); diff --git a/src/backend/postmaster/auxprocess.c b/src/backend/postmaster/auxprocess.c index cae6feb3562..bae6f68c402 100644 --- a/src/backend/postmaster/auxprocess.c +++ b/src/backend/postmaster/auxprocess.c @@ -97,12 +97,9 @@ AuxiliaryProcessMain(AuxProcType auxtype) */ /* - * Create a PGPROC so we can use LWLocks. In the EXEC_BACKEND case, this - * was already done by SubPostmasterMain(). + * Create a PGPROC so we can use LWLocks and access shared memory. */ -#ifndef EXEC_BACKEND InitAuxiliaryProcess(); -#endif BaseInit(); diff --git a/src/backend/postmaster/bgworker.c b/src/backend/postmaster/bgworker.c index d936986c2bf..c345639086c 100644 --- a/src/backend/postmaster/bgworker.c +++ b/src/backend/postmaster/bgworker.c @@ -810,14 +810,10 @@ BackgroundWorkerMain(void) PG_exception_stack = &local_sigjmp_buf; /* - * Create a per-backend PGPROC struct in shared memory, except in the - * EXEC_BACKEND case where this was done in SubPostmasterMain. We must do - * this before we can use LWLocks (and in the EXEC_BACKEND case we already - * had to do some stuff with LWLocks). + * Create a per-backend PGPROC struct in shared memory. We must do this + * before we can use LWLocks or access any shared memory. */ -#ifndef EXEC_BACKEND InitProcess(); -#endif /* * Early initialization. diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 92e51bd54db..49cbd8cd05f 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -4100,15 +4100,6 @@ BackendStartup(Port *port) /* Perform additional initialization and collect startup packet */ BackendInitialize(port); - /* - * Create a per-backend PGPROC struct in shared memory. We must do - * this before we can use LWLocks. In the !EXEC_BACKEND case (here) - * this could be delayed a bit further, but EXEC_BACKEND needs to do - * stuff with LWLocks before PostgresMain(), so we do it here as well - * for symmetry. - */ - InitProcess(); - /* And run the backend */ BackendRun(port); } @@ -4420,6 +4411,12 @@ static void BackendRun(Port *port) { /* + * Create a per-backend PGPROC struct in shared memory. We must do this + * before we can use LWLocks or access any shared memory. + */ + InitProcess(); + + /* * Make sure we aren't in PostmasterContext anymore. (We can't delete it * just yet, though, because InitPostgres will need the HBA data.) */ @@ -4918,12 +4915,6 @@ SubPostmasterMain(int argc, char *argv[]) /* Restore basic shared memory pointers */ InitShmemAccess(UsedShmemSegAddr); - /* Need a PGPROC to run AttachSharedMemoryStructs */ - InitProcess(); - - /* Attach process to shared data structures */ - AttachSharedMemoryStructs(); - /* And run the backend */ BackendRun(port); /* does not return */ } @@ -4936,12 +4927,6 @@ SubPostmasterMain(int argc, char *argv[]) /* Restore basic shared memory pointers */ InitShmemAccess(UsedShmemSegAddr); - /* Need a PGPROC to run AttachSharedMemoryStructs */ - InitAuxiliaryProcess(); - - /* Attach process to shared data structures */ - AttachSharedMemoryStructs(); - auxtype = atoi(argv[3]); AuxiliaryProcessMain(auxtype); /* does not return */ } @@ -4950,12 +4935,6 @@ SubPostmasterMain(int argc, char *argv[]) /* Restore basic shared memory pointers */ InitShmemAccess(UsedShmemSegAddr); - /* Need a PGPROC to run AttachSharedMemoryStructs */ - InitProcess(); - - /* Attach process to shared data structures */ - AttachSharedMemoryStructs(); - AutoVacLauncherMain(argc - 2, argv + 2); /* does not return */ } if (strcmp(argv[1], "--forkavworker") == 0) @@ -4963,12 +4942,6 @@ SubPostmasterMain(int argc, char *argv[]) /* Restore basic shared memory pointers */ InitShmemAccess(UsedShmemSegAddr); - /* Need a PGPROC to run AttachSharedMemoryStructs */ - InitProcess(); - - /* Attach process to shared data structures */ - AttachSharedMemoryStructs(); - AutoVacWorkerMain(argc - 2, argv + 2); /* does not return */ } if (strcmp(argv[1], "--forkbgworker") == 0) @@ -4979,12 +4952,6 @@ SubPostmasterMain(int argc, char *argv[]) /* Restore basic shared memory pointers */ InitShmemAccess(UsedShmemSegAddr); - /* Need a PGPROC to run AttachSharedMemoryStructs */ - InitProcess(); - - /* Attach process to shared data structures */ - AttachSharedMemoryStructs(); - MyBgworkerEntry = worker; BackgroundWorkerMain(); } |