mirror of
https://github.com/postgres/postgres.git
synced 2025-10-25 13:17:41 +03:00
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
This commit is contained in:
@@ -26,9 +26,7 @@ extern PGDLLIMPORT char *PrimarySlotName;
|
||||
extern char *CheckAndGetDbnameFromConninfo(void);
|
||||
extern bool ValidateSlotSyncParams(int elevel);
|
||||
|
||||
#ifdef EXEC_BACKEND
|
||||
extern void ReplSlotSyncWorkerMain(int argc, char *argv[]) pg_attribute_noreturn();
|
||||
#endif
|
||||
extern void ReplSlotSyncWorkerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
|
||||
extern int StartSlotSyncWorker(void);
|
||||
|
||||
extern void ShutDownSlotSync(void);
|
||||
|
||||
@@ -483,7 +483,7 @@ walrcv_clear_result(WalRcvExecResult *walres)
|
||||
}
|
||||
|
||||
/* prototypes for functions in walreceiver.c */
|
||||
extern void WalReceiverMain(void) pg_attribute_noreturn();
|
||||
extern void WalReceiverMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
|
||||
extern void ProcessWalRcvInterrupts(void);
|
||||
extern void WalRcvForceReply(void);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user