On Mon, Jun 5, 2023 at 4:26 PM Bruce Momjian <br...@momjian.us> wrote: > I remember we used to have macros we called before we modified critical > parts of shared memory, and if a process exited while in those blocks, > the server would restart. Unfortunately, I can't find that in the code > now.
Isn't that what we call a critical section? They effectively "promote" any ERROR (e.g., from an OOM) into a PANIC. I thought that we only used critical sections for things that are WAL-logged, but I double checked just now. Turns out that I was wrong: PGSTAT_BEGIN_WRITE_ACTIVITY() contains its own START_CRIT_SECTION(), despite not being involved in WAL logging. And so critical sections could indeed be described as something that we use whenever shared memory cannot be left in an inconsistent state (which often coincides with WAL logging, but need not). -- Peter Geoghegan