Detach syslogger from shared memory
authorHeikki Linnakangas
Mon, 29 Jul 2024 19:21:34 +0000 (22:21 +0300)
committerHeikki Linnakangas
Mon, 29 Jul 2024 19:42:15 +0000 (22:42 +0300)
Commit aafc05de1b removed the calls to detach from shared memory from
syslogger startup. That was not intentional, so put them back.

Author: Rui Zhao
Reviewed-by: Aleksander Alekseev
Backpatch-through: 17
Discussion: https://www.postgresql.org/message-id/11505016-8cf3-4691-b996-7faed99b7877[email protected]

src/backend/postmaster/launch_backend.c

index bdf490c31d0260e321caf3777aa3dbaac877b7f8..d23aed237d2cff223a9eb787c34f7ac0be238568 100644 (file)
@@ -53,6 +53,7 @@
 #include "postmaster/walwriter.h"
 #include "replication/slotsync.h"
 #include "replication/walreceiver.h"
+#include "storage/dsm.h"
 #include "storage/fd.h"
 #include "storage/ipc.h"
 #include "storage/pg_shmem.h"
@@ -219,9 +220,9 @@ 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
- * and other resources that we've inherited from postmaster that are not
- * needed in a child process have been closed.
+ * EXEC_BACKEND is used or not: it will be attached to shared memory if
+ * appropriate, and fds and other resources that we've inherited from
+ * postmaster that are not needed in a child process have been closed.
  *
  * 'startup_data' is an optional contiguous chunk of data that is passed to
  * the child process.
@@ -249,6 +250,13 @@ postmaster_child_launch(BackendType child_type,
        /* Detangle from postmaster */
        InitPostmasterChild();
 
+       /* Detach shared memory if 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.