Thread

  1. [PATCH v7 2/3] Assign backend type earlier

    Euler Taveira <euler@eulerto.com> — 2025-11-26T00:09:11Z

    Instead of assigning the backend type into the Main function of each
    postmaster child, do it earlier (after fork()). The backend type is
    already known by postmaster_child_launch() before it calls fork(). This
    reduces the time frame that MyBackendType is correct. (This is important
    for log_min_messages per backend type that relies on a known
    MyBackendType to decide if it writes a log message or not.)
    ---
     src/backend/postmaster/autovacuum.c        | 2 --
     src/backend/postmaster/bgworker.c          | 1 -
     src/backend/postmaster/bgwriter.c          | 1 -
     src/backend/postmaster/checkpointer.c      | 1 -
     src/backend/postmaster/launch_backend.c    | 2 ++
     src/backend/postmaster/pgarch.c            | 1 -
     src/backend/postmaster/startup.c           | 1 -
     src/backend/postmaster/syslogger.c         | 1 -
     src/backend/postmaster/walsummarizer.c     | 1 -
     src/backend/postmaster/walwriter.c         | 1 -
     src/backend/replication/logical/slotsync.c | 2 --
     src/backend/replication/walreceiver.c      | 1 -
     src/backend/storage/aio/method_worker.c    | 1 -
     13 files changed, 2 insertions(+), 14 deletions(-)
    
    diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
    index 1c38488f2cb..36c1911a3a8 100644
    --- a/src/backend/postmaster/autovacuum.c
    +++ b/src/backend/postmaster/autovacuum.c
    @@ -388,7 +388,6 @@ AutoVacLauncherMain(const void *startup_data, size_t startup_data_len)
     		PostmasterContext = NULL;
     	}
     
    -	MyBackendType = B_AUTOVAC_LAUNCHER;
     	init_ps_display(NULL);
     
     	ereport(DEBUG1,
    @@ -1401,7 +1400,6 @@ AutoVacWorkerMain(const void *startup_data, size_t startup_data_len)
     		PostmasterContext = NULL;
     	}
     
    -	MyBackendType = B_AUTOVAC_WORKER;
     	init_ps_display(NULL);
     
     	Assert(GetProcessingMode() == InitProcessing);
    diff --git a/src/backend/postmaster/bgworker.c b/src/backend/postmaster/bgworker.c
    index 142a02eb5e9..260f051711e 100644
    --- a/src/backend/postmaster/bgworker.c
    +++ b/src/backend/postmaster/bgworker.c
    @@ -741,7 +741,6 @@ BackgroundWorkerMain(const void *startup_data, size_t startup_data_len)
     	}
     
     	MyBgworkerEntry = worker;
    -	MyBackendType = B_BG_WORKER;
     	init_ps_display(worker->bgw_name);
     
     	Assert(GetProcessingMode() == InitProcessing);
    diff --git a/src/backend/postmaster/bgwriter.c b/src/backend/postmaster/bgwriter.c
    index 72f5acceec7..4119758a72c 100644
    --- a/src/backend/postmaster/bgwriter.c
    +++ b/src/backend/postmaster/bgwriter.c
    @@ -94,7 +94,6 @@ BackgroundWriterMain(const void *startup_data, size_t startup_data_len)
     
     	Assert(startup_data_len == 0);
     
    -	MyBackendType = B_BG_WRITER;
     	AuxiliaryProcessMainCommon();
     
     	/*
    diff --git a/src/backend/postmaster/checkpointer.c b/src/backend/postmaster/checkpointer.c
    index afb3d6d8630..427f50752d4 100644
    --- a/src/backend/postmaster/checkpointer.c
    +++ b/src/backend/postmaster/checkpointer.c
    @@ -199,7 +199,6 @@ CheckpointerMain(const void *startup_data, size_t startup_data_len)
     
     	Assert(startup_data_len == 0);
     
    -	MyBackendType = B_CHECKPOINTER;
     	AuxiliaryProcessMainCommon();
     
     	CheckpointerShmem->checkpointer_pid = MyProcPid;
    diff --git a/src/backend/postmaster/launch_backend.c b/src/backend/postmaster/launch_backend.c
    index c2a044321d1..35420b8c9fb 100644
    --- a/src/backend/postmaster/launch_backend.c
    +++ b/src/backend/postmaster/launch_backend.c
    @@ -224,6 +224,8 @@ postmaster_child_launch(BackendType child_type, int child_slot,
     	pid = fork_process();
     	if (pid == 0)				/* child */
     	{
    +		MyBackendType = child_type;
    +
     		/* Capture and transfer timings that may be needed for logging */
     		if (IsExternalConnectionBackend(child_type))
     		{
    diff --git a/src/backend/postmaster/pgarch.c b/src/backend/postmaster/pgarch.c
    index ce6b5299324..b760d1aed40 100644
    --- a/src/backend/postmaster/pgarch.c
    +++ b/src/backend/postmaster/pgarch.c
    @@ -222,7 +222,6 @@ PgArchiverMain(const void *startup_data, size_t startup_data_len)
     {
     	Assert(startup_data_len == 0);
     
    -	MyBackendType = B_ARCHIVER;
     	AuxiliaryProcessMainCommon();
     
     	/*
    diff --git a/src/backend/postmaster/startup.c b/src/backend/postmaster/startup.c
    index 27e86cf393f..13e86a2921e 100644
    --- a/src/backend/postmaster/startup.c
    +++ b/src/backend/postmaster/startup.c
    @@ -217,7 +217,6 @@ StartupProcessMain(const void *startup_data, size_t startup_data_len)
     {
     	Assert(startup_data_len == 0);
     
    -	MyBackendType = B_STARTUP;
     	AuxiliaryProcessMainCommon();
     
     	/* Arrange to clean up at startup process exit */
    diff --git a/src/backend/postmaster/syslogger.c b/src/backend/postmaster/syslogger.c
    index 50c2edec1f6..a378b15a6de 100644
    --- a/src/backend/postmaster/syslogger.c
    +++ b/src/backend/postmaster/syslogger.c
    @@ -206,7 +206,6 @@ SysLoggerMain(const void *startup_data, size_t startup_data_len)
     
     	now = MyStartTime;
     
    -	MyBackendType = B_LOGGER;
     	init_ps_display(NULL);
     
     	/*
    diff --git a/src/backend/postmaster/walsummarizer.c b/src/backend/postmaster/walsummarizer.c
    index c4a888a081c..ce497d8ec42 100644
    --- a/src/backend/postmaster/walsummarizer.c
    +++ b/src/backend/postmaster/walsummarizer.c
    @@ -234,7 +234,6 @@ WalSummarizerMain(const void *startup_data, size_t startup_data_len)
     
     	Assert(startup_data_len == 0);
     
    -	MyBackendType = B_WAL_SUMMARIZER;
     	AuxiliaryProcessMainCommon();
     
     	ereport(DEBUG1,
    diff --git a/src/backend/postmaster/walwriter.c b/src/backend/postmaster/walwriter.c
    index fd92c8b7a33..c1b4ddda555 100644
    --- a/src/backend/postmaster/walwriter.c
    +++ b/src/backend/postmaster/walwriter.c
    @@ -94,7 +94,6 @@ WalWriterMain(const void *startup_data, size_t startup_data_len)
     
     	Assert(startup_data_len == 0);
     
    -	MyBackendType = B_WAL_WRITER;
     	AuxiliaryProcessMainCommon();
     
     	/*
    diff --git a/src/backend/replication/logical/slotsync.c b/src/backend/replication/logical/slotsync.c
    index 7e3b4c4413e..364df1ad519 100644
    --- a/src/backend/replication/logical/slotsync.c
    +++ b/src/backend/replication/logical/slotsync.c
    @@ -1436,8 +1436,6 @@ ReplSlotSyncWorkerMain(const void *startup_data, size_t startup_data_len)
     
     	Assert(startup_data_len == 0);
     
    -	MyBackendType = B_SLOTSYNC_WORKER;
    -
     	init_ps_display(NULL);
     
     	Assert(GetProcessingMode() == InitProcessing);
    diff --git a/src/backend/replication/walreceiver.c b/src/backend/replication/walreceiver.c
    index 3a94c9683a7..154fe9e0cb5 100644
    --- a/src/backend/replication/walreceiver.c
    +++ b/src/backend/replication/walreceiver.c
    @@ -168,7 +168,6 @@ WalReceiverMain(const void *startup_data, size_t startup_data_len)
     
     	Assert(startup_data_len == 0);
     
    -	MyBackendType = B_WAL_RECEIVER;
     	AuxiliaryProcessMainCommon();
     
     	/*
    diff --git a/src/backend/storage/aio/method_worker.c b/src/backend/storage/aio/method_worker.c
    index 866a35abbd1..64caaa7b766 100644
    --- a/src/backend/storage/aio/method_worker.c
    +++ b/src/backend/storage/aio/method_worker.c
    @@ -390,7 +390,6 @@ IoWorkerMain(const void *startup_data, size_t startup_data_len)
     	volatile int error_errno = 0;
     	char		cmd[128];
     
    -	MyBackendType = B_IO_WORKER;
     	AuxiliaryProcessMainCommon();
     
     	pqsignal(SIGHUP, SignalHandlerForConfigReload);
    -- 
    2.47.3
    
    
    --grg2fqqi6tkdt5me
    Content-Type: text/x-diff; charset=utf-8
    Content-Disposition: attachment;
    	filename="v7-0003-Fixup-assign-backend-type-earlier.patch"