Thread

  1. [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.

    Antonin Houska <ah@cybertec.at> — 2026-04-13T09:36:41Z

    The value is only needed by te worker, so there is no need to store it in
    shared memory.
    ---
     src/backend/commands/repack_worker.c   | 5 +++--
     src/include/commands/repack_internal.h | 1 -
     2 files changed, 3 insertions(+), 3 deletions(-)
    
    diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
    index 5bd020e0184..a594d6db25f 100644
    --- a/src/backend/commands/repack_worker.c
    +++ b/src/backend/commands/repack_worker.c
    @@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
     static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
     static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
     
    +static dsm_segment	*worker_dsm_segment = NULL;
     
     /* REPACK decoding worker entry point */
     void
    @@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
     		ereport(ERROR,
     				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
     				errmsg("could not map dynamic shared memory segment"));
    +	worker_dsm_segment = seg;
     
     	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
    -	shared->dsm_seg = seg;
     
     	/* Arrange to signal the leader if we exit. */
     	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
    @@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
     				   PROCSIG_REPACK_MESSAGE,
     				   shared->backend_proc_number);
     
    -	dsm_detach(shared->dsm_seg);
    +	dsm_detach(worker_dsm_segment);
     }
     
     bool
    diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
    index 3ff64444351..6a85cee8910 100644
    --- a/src/include/commands/repack_internal.h
    +++ b/src/include/commands/repack_internal.h
    @@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
     	PGPROC	   *backend_proc;
     	pid_t		backend_pid;
     	ProcNumber	backend_proc_number;
    -	dsm_segment *dsm_seg;
     
     	/*
     	 * Memory the queue is located in.
    -- 
    2.47.3
    
    
    --=-=-=--