From 3d7c752a2f092b9f6581497009eacd10cab90548 Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Thu, 16 Sep 2021 03:23:05 -0700 Subject: [PATCH] process startup: Do InitProcess() at the same time regardless of EXEC_BACKEND. An upcoming patch splits single user mode into its own function. This makes that easier. Split out for easier review / testing. Reviewed-By: Kyotaro Horiguchi Author: Andres Freund Discussion: https://postgr.es/m/20210802164124.ufo5buo4apl6yuvs@alap3.anarazel.de --- src/backend/postmaster/postmaster.c | 9 +++++++++ src/backend/tcop/postgres.c | 17 +++++------------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index d16d881e57..2ab7ed7dc3 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -4275,6 +4275,15 @@ 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); } diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 489e27f99a..d85e10d9ce 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -4058,20 +4058,13 @@ PostgresMain(int argc, char *argv[], * point during startup that postmaster does so. */ PgStartTime = GetCurrentTimestamp(); - } - /* - * 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). - */ -#ifdef EXEC_BACKEND - if (!IsUnderPostmaster) + /* + * Create a per-backend PGPROC struct in shared memory. We must do + * this before we can use LWLocks. + */ InitProcess(); -#else - InitProcess(); -#endif + } /* Early initialization */ BaseInit();