Re: Rename ShmemVariableCache and initialize it in more standard way

Tristan Partin <tristan@neon.tech>

From: "Tristan Partin" <tristan@neon.tech>
To: "Heikki Linnakangas" <hlinnaka@iki.fi>, "pgsql-hackers" <pgsql-hackers@postgresql.org>
Cc: "Andres Freund" <andres@anarazel.de>
Date: 2023-12-04T16:31:36Z
Lists: pgsql-hackers
On Mon Dec 4, 2023 at 6:49 AM CST, Heikki Linnakangas wrote:
> This came up in the "Refactoring backend fork+exec code" thread recently 
> [0], but is independent of that work:
>
> On 11/07/2023 01:50, Andres Freund wrote:
> >> --- a/src/backend/storage/ipc/shmem.c
> >> +++ b/src/backend/storage/ipc/shmem.c
> >> @@ -144,6 +144,8 @@ InitShmemAllocation(void)
> >>  	/*
> >>  	 * Initialize ShmemVariableCache for transaction manager. (This doesn't
> >>  	 * really belong here, but not worth moving.)
> >> +	 *
> >> +	 * XXX: we really should move this
> >>  	 */
> >>  	ShmemVariableCache = (VariableCache)
> >>  		ShmemAlloc(sizeof(*ShmemVariableCache));
> > 
> > Heh. Indeed. And probably just rename it to something less insane.
>
> Here's a patch to allocate and initialize it with a pair of ShmemSize 
> and ShmemInit functions, like all other shared memory structs.
>

>  +        if (!IsUnderPostmaster)
>  +        {
>  +                Assert(!found);
>  +                memset(ShmemVariableCache, 0, sizeof(VariableCacheData));
>  +        }
>  +        else
>  +                Assert(found);

Should the else branch instead be a fatal log?

Patches look good to me.
-- 
Tristan Partin
Neon (https://neon.tech)



Commits

  1. Rename ShmemVariableCache to TransamVariables

  2. Initialize ShmemVariableCache like other shmem areas