pg.ddx.io  pgsql-committers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Michael Paquier <michael@paquier.xyz>
To: pgsql-committers@lists.postgresql.org
Subject: pgsql: Integrate FullTransactionIds deeper into two-phase code
Date: Mon, 07 Jul 2025 04:03:17 +0000
Message-ID: <E1uYd4X-0053MF-16@gemulon.postgresql.org> (raw)

Integrate FullTransactionIds deeper into two-phase code

This refactoring is a follow-up of the work done in 5a1dfde8334b, that
has switched 2PC file names to use FullTransactionIds when written on
disk.  This will help with the integration of a follow-up solution
related to the handling of two-phase files during recovery, to address
older defects while reading these from disk after a crash.

This change is useful in itself as it reduces the need to build the
file names from epoch numbers and TransactionIds, because we can use
directly FullTransactionIds from which the 2PC file names are guessed.
So this avoids a lot of back-and-forth between the FullTransactionIds
retrieved from the file names and how these are passed around in the
internal 2PC logic.

Note that the core of the change is the use of a FullTransactionId
instead of a TransactionId in GlobalTransactionData, that tracks 2PC
file information in shared memory.  The change in TwoPhaseCallback makes
this commit unfit for stable branches.

Noah has contributed a good chunk of this patch.  I have spent some time
on it as well while working on the issues with two-phase state files and
recovery.

Author: Noah Misch <noah@leadboat.com>
Co-Authored-by: Michael Paquier <michael@paquier.xyz>
Discussion: https://postgr.es/m/Z5sd5O9JO7NYNK-C@paquier.xyz
Discussion: https://postgr.es/m/20250116205254.65.nmisch@google.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/62a17a92833d1eaa60d8ea372663290942a1e8eb

Modified Files
--------------
src/backend/access/transam/multixact.c       |  16 +-
src/backend/access/transam/twophase.c        | 245 ++++++++++++++++-----------
src/backend/access/transam/xact.c            |  13 +-
src/backend/storage/lmgr/lock.c              |  20 +--
src/backend/storage/lmgr/predicate.c         |  11 +-
src/backend/utils/activity/pgstat_relation.c |   4 +-
src/include/access/multixact.h               |   9 +-
src/include/access/twophase.h                |  11 +-
src/include/access/twophase_rmgr.h           |   4 +-
src/include/pgstat.h                         |   4 +-
src/include/storage/lock.h                   |  11 +-
src/include/storage/predicate.h              |   6 +-
12 files changed, 200 insertions(+), 154 deletions(-)



Message-ID: <E1uYd4X-0053MF-16@gemulon.postgresql.org>
Permalink:  ../E1uYd4X-0053MF-16@gemulon.postgresql.org/
Also on:    postgresql.org/message-id/E1uYd4X-0053MF-16@gemulon.postgresql.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-committers@postgresql.org
  Cc: michael@paquier.xyz, pgsql-committers@lists.postgresql.org
  Subject: Re: pgsql: Integrate FullTransactionIds deeper into two-phase code
  In-Reply-To: <E1uYd4X-0053MF-16@gemulon.postgresql.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

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