From 96f869371e77e21047e1b842692872d3ebf445de Mon Sep 17 00:00:00 2001 From: "Rui Zhao" Date: Mon, 29 Jul 2024 16:55:04 +0800 Subject: [PATCH] Detach shared memory in Postmaster child if not needed --- src/backend/postmaster/launch_backend.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/backend/postmaster/launch_backend.c b/src/backend/postmaster/launch_backend.c index 8d4589846a..0037772c4f 100644 --- a/src/backend/postmaster/launch_backend.c +++ b/src/backend/postmaster/launch_backend.c @@ -219,7 +219,8 @@ PostmasterChildName(BackendType child_type) * Start a new postmaster child process. * * The child process will be restored to roughly the same state whether - * EXEC_BACKEND is used or not: it will be attached to shared memory, and fds + * EXEC_BACKEND is used or not: it will be attached to shared memory if + * shmem_attach is set to true and will be detached if it is not, and fds * and other resources that we've inherited from postmaster that are not * needed in a child process have been closed. * @@ -249,6 +250,13 @@ postmaster_child_launch(BackendType child_type, /* Detangle from postmaster */ InitPostmasterChild(); + /* Detach from shared memory if it is not needed. */ + if (!child_process_kinds[child_type].shmem_attach) + { + dsm_detach_all(); + PGSharedMemoryDetach(); + } + /* * Enter the Main function with TopMemoryContext. The startup data is * allocated in PostmasterContext, so we cannot release it here yet. -- 2.39.3