aboutsummaryrefslogtreecommitdiff
path: root/src/backend/postmaster/checkpointer.c
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2024-03-18 11:35:08 +0200
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2024-03-18 11:35:30 +0200
commitaafc05de1bf5c0324cb5e690c6742118c1ac4af6 (patch)
treec750628b17b1175e2ec4bb420275d3b6f2bced6b /src/backend/postmaster/checkpointer.c
parentf1baed18bc3db50c72bfb00b6247b47689158445 (diff)
downloadpostgresql-aafc05de1bf5c0324cb5e690c6742118c1ac4af6.tar.gz
postgresql-aafc05de1bf5c0324cb5e690c6742118c1ac4af6.zip
Refactor postmaster child process launching
Introduce new postmaster_child_launch() function that deals with the differences in EXEC_BACKEND mode. Refactor the mechanism of passing information from the parent to child process. Instead of using different command-line arguments when launching the child process in EXEC_BACKEND mode, pass a variable-length blob of startup data along with all the global variables. The contents of that blob depend on the kind of child process being launched. In !EXEC_BACKEND mode, we use the same blob, but it's simply inherited from the parent to child process. Reviewed-by: Tristan Partin, Andres Freund Discussion: https://www.postgresql.org/message-id/7a59b073-5b5b-151e-7ed3-8b01ff7ce9ef@iki.fi
Diffstat (limited to 'src/backend/postmaster/checkpointer.c')
-rw-r--r--src/backend/postmaster/checkpointer.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/backend/postmaster/checkpointer.c b/src/backend/postmaster/checkpointer.c
index 46197d56f86..8ef600ae72a 100644
--- a/src/backend/postmaster/checkpointer.c
+++ b/src/backend/postmaster/checkpointer.c
@@ -42,6 +42,7 @@
#include "libpq/pqsignal.h"
#include "miscadmin.h"
#include "pgstat.h"
+#include "postmaster/auxprocess.h"
#include "postmaster/bgwriter.h"
#include "postmaster/interrupt.h"
#include "replication/syncrep.h"
@@ -169,11 +170,16 @@ static void ReqCheckpointHandler(SIGNAL_ARGS);
* basic execution environment, but not enabled signals yet.
*/
void
-CheckpointerMain(void)
+CheckpointerMain(char *startup_data, size_t startup_data_len)
{
sigjmp_buf local_sigjmp_buf;
MemoryContext checkpointer_context;
+ Assert(startup_data_len == 0);
+
+ MyBackendType = B_CHECKPOINTER;
+ AuxiliaryProcessMainCommon();
+
CheckpointerShmem->checkpointer_pid = MyProcPid;
/*