pg.ddx.io  pgsql-committers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
pgsql: Teach DSM registry to retry entry initialization if needed.
3+ messages / 1 participants
[nested] [flat]

* pgsql: Teach DSM registry to retry entry initialization if needed.
@ 2025-11-26 21:16 Nathan Bossart <nathan@postgresql.org>
  0 siblings, 0 replies; 3+ messages in thread

From: Nathan Bossart @ 2025-11-26 21:16 UTC (permalink / raw)
  To: pgsql-committers@lists.postgresql.org

Teach DSM registry to retry entry initialization if needed.

If DSM registry entry initialization fails, backends could try to
use an uninitialized DSM segment, DSA, or dshash table (since the
entry is still added to the registry).  To fix, restructure the
code so that the registry retries initialization as needed.  This
commit also modifies pg_get_dsm_registry_allocations() to leave out
partially-initialized entries, as they shouldn't have any allocated
memory.

DSM registry entry initialization shouldn't fail often in practice,
but retrying was deemed better than leaving entries in a
permanently failed state (as was done by commit 1165a933aa, which
has since been reverted).

Suggested-by: Robert Haas <robertmhaas@gmail.com>
Reviewed-by: Robert Haas <robertmhaas@gmail.com>
Discussion: https://postgr.es/m/E1vJHUk-006I7r-37%40gemulon.postgresql.org
Backpatch-through: 17

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/dbdc717ac6743074c3a55fc5c380638c91d24afd

Modified Files
--------------
src/backend/storage/ipc/dsm_registry.c | 121 +++++++++++++++++++++------------
1 file changed, 78 insertions(+), 43 deletions(-)



^ permalink  raw  reply  [nested|flat] 3+ messages in thread

* pgsql: Teach DSM registry to retry entry initialization if needed.
@ 2025-11-26 21:16 Nathan Bossart <nathan@postgresql.org>
  0 siblings, 0 replies; 3+ messages in thread

From: Nathan Bossart @ 2025-11-26 21:16 UTC (permalink / raw)
  To: pgsql-committers@lists.postgresql.org

Teach DSM registry to retry entry initialization if needed.

If DSM registry entry initialization fails, backends could try to
use an uninitialized DSM segment, DSA, or dshash table (since the
entry is still added to the registry).  To fix, restructure the
code so that the registry retries initialization as needed.  This
commit also modifies pg_get_dsm_registry_allocations() to leave out
partially-initialized entries, as they shouldn't have any allocated
memory.

DSM registry entry initialization shouldn't fail often in practice,
but retrying was deemed better than leaving entries in a
permanently failed state (as was done by commit 1165a933aa, which
has since been reverted).

Suggested-by: Robert Haas <robertmhaas@gmail.com>
Reviewed-by: Robert Haas <robertmhaas@gmail.com>
Discussion: https://postgr.es/m/E1vJHUk-006I7r-37%40gemulon.postgresql.org
Backpatch-through: 17

Branch
------
REL_18_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/b83bcc0df180056b9374bd4239d32fea84bb46f2

Modified Files
--------------
src/backend/storage/ipc/dsm_registry.c | 37 ++++++++++++++++++----------------
1 file changed, 20 insertions(+), 17 deletions(-)



^ permalink  raw  reply  [nested|flat] 3+ messages in thread

* pgsql: Teach DSM registry to retry entry initialization if needed.
@ 2025-11-26 21:16 Nathan Bossart <nathan@postgresql.org>
  0 siblings, 0 replies; 3+ messages in thread

From: Nathan Bossart @ 2025-11-26 21:16 UTC (permalink / raw)
  To: pgsql-committers@lists.postgresql.org

Teach DSM registry to retry entry initialization if needed.

If DSM registry entry initialization fails, backends could try to
use an uninitialized DSM segment, DSA, or dshash table (since the
entry is still added to the registry).  To fix, restructure the
code so that the registry retries initialization as needed.  This
commit also modifies pg_get_dsm_registry_allocations() to leave out
partially-initialized entries, as they shouldn't have any allocated
memory.

DSM registry entry initialization shouldn't fail often in practice,
but retrying was deemed better than leaving entries in a
permanently failed state (as was done by commit 1165a933aa, which
has since been reverted).

Suggested-by: Robert Haas <robertmhaas@gmail.com>
Reviewed-by: Robert Haas <robertmhaas@gmail.com>
Discussion: https://postgr.es/m/E1vJHUk-006I7r-37%40gemulon.postgresql.org
Backpatch-through: 17

Branch
------
REL_17_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/2fc5c5062207a26b4ea4144a3d70099767eee523

Modified Files
--------------
src/backend/storage/ipc/dsm_registry.c | 37 ++++++++++++++++++----------------
1 file changed, 20 insertions(+), 17 deletions(-)



^ permalink  raw  reply  [nested|flat] 3+ messages in thread


end of thread, other threads:[~2025-11-26 21:16 UTC | newest]

Thread overview: 3+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2025-11-26 21:16 pgsql: Teach DSM registry to retry entry initialization if needed. Nathan Bossart <nathan@postgresql.org>
2025-11-26 21:16 pgsql: Teach DSM registry to retry entry initialization if needed. Nathan Bossart <nathan@postgresql.org>
2025-11-26 21:16 pgsql: Teach DSM registry to retry entry initialization if needed. Nathan Bossart <nathan@postgresql.org>

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox