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(-)
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