pgsql: Refactor more code logic to update the control file

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Refactor more code logic to update the control file
Date: 2019-03-18 04:01:55
Message-ID: E1h5jTH-0003SV-1o@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Refactor more code logic to update the control file

ce6afc6 has begun the refactoring work by plugging pg_rewind into a
central routine to update the control file, and left around two extra
copies, with one in xlog.c for the backend and one in pg_resetwal.c. By
adding an extra option to the central routine in controldata_utils.c to
control if a flush of the control file needs to be done, it is proving
to be straight-forward to make xlog.c and pg_resetwal.c use the central
code path at the condition of moving the wait event tracking there.
Hence, this allows to have only one central code path to update the
control file, shaving the code from the duplicates.

This refactoring actually fixes a problem in pg_resetwal. Previously,
the control file was first removed before being recreated. So if a
crash happened between the moment the file was removed and the moment
the file was created, then it would have been possible to not have a
control file anymore in the database folder.

Author: Fabien Coelho
Reviewed-by: Michael Paquier
Discussion: https://postgr.es/m/alpine.DEB.2.21.1903170935210.2506@lancre

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/8b938d36f7446e76436ca4a8ddcebbebaeaab480

Modified Files
--------------
src/backend/access/transam/xlog.c | 48 ++++---------------------
src/bin/pg_resetwal/pg_resetwal.c | 64 ++--------------------------------
src/bin/pg_rewind/pg_rewind.c | 2 +-
src/common/controldata_utils.c | 51 ++++++++++++++++++++++-----
src/include/common/controldata_utils.h | 6 ++--
5 files changed, 55 insertions(+), 116 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Michael Paquier 2019-03-18 04:12:00 Re: pgsql: Beautify initialization of JsonValueList and JsonLikeRegexContex
Previous Message Michael Paquier 2019-03-18 01:36:04 pgsql: Fix pg_rewind when rewinding new database with tables included