Re: visibility map corruption

From: "Drouvot, Bertrand" <bdrouvot(at)amazon(dot)com>
To: Bruce Momjian <bruce(at)momjian(dot)us>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Floris Van Nee <florisvannee(at)optiver(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Mark Dilger <mark(dot)dilger(at)enterprisedb(dot)com>, Peter Geoghegan <pg(at)bowt(dot)ie>
Subject: Re: visibility map corruption
Date: 2021-07-08 05:35:58
Message-ID: fd660c6f-9e92-7502-c47c-8cf37e2d1a94@amazon.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

On 7/7/21 3:49 AM, Bruce Momjian wrote:
> On Tue, Jul 6, 2021 at 08:36:13PM -0400, Bruce Momjian wrote:
>> On Tue, Jul 6, 2021 at 06:49:10PM -0400, Bruce Momjian wrote:
>>> My point is that there are a lot internals involved here that are not
>>> part of pg_upgrade, though it probably only affects pg_upgrade. Anyway,
>>> Bertrand patch seems to have what I need.
>> One question is how do we want to handle cases where -x next_xid is used
>> but -u oldestXid is not used? Compute a value for oldestXid like we did
>> previously? Throw an error? Leave oldestXid unchanged? I am thinking
>> the last option.
> Here is a modified version of Bertrand's patch, with docs, that does the
> last option.

Thanks for having looked at it.

It looks good to me, but i have one question:

+    printf(_("  -u, --oldest-transaction-id=XID  set oldest transaction
ID\n"));

and

+                   if (!TransactionIdIsNormal(set_oldest_xid))
+                   {
+                        pg_log_error("oldest transaction ID (-u) must
be greater or equal to %u", FirstNormalTransactionId);
+                        exit(1);
+                   }

I am wondering if we should not keep my original proposal "oldest
unfrozen transaction" (as compare to "oldest transaction") in both
output to:

- make the wording similar with what we can found in StartupXLOG():

    ereport(DEBUG1,
            (errmsg_internal("oldest unfrozen transaction ID: %u, in
database %u",
                             checkPoint.oldestXid,
checkPoint.oldestXidDB)));

- give the new  "-u" a sense (somehow) from a naming point of view.

What do you think?

Thanks

Bertrand

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Amit Kapila 2021-07-08 06:07:30 Re: [HACKERS] logical decoding of two-phase transactions
Previous Message Masahiko Sawada 2021-07-08 05:30:59 Re: [PoC] Improve dead tuple storage for lazy vacuum