postgres.git / summary / log / commit / refs
commit 3d7c752a2f092b9f6581497009eacd10cab90548
Author: Andres Freund <andres@anarazel.de>
Date: Thu Sep 16 10:23:05 2021 +0000
First released in: 15.0
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 <horikyota.ntt@gmail.com>
Author: Andres Freund <andres@anarazel.de>
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 d16d881e570..2ab7ed7dc39 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 489e27f99ae..d85e10d9cef 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();
[parent: 37a9aa659111]