public inbox for [email protected]  
help / color / mirror / Atom feed
From: Andres Freund <[email protected]>
To: Tom Lane <[email protected]>
Cc: [email protected]
Cc: Michael Banck <[email protected]>
Subject: Re: Release notes for February minor releases
Date: Sat, 5 Feb 2022 14:58:59 -0800
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>

Hi,

On 2022-02-04 14:58:59 -0500, Tom Lane wrote:
> I've pushed the first draft for $SUBJECT at
>
> https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=ab22eea83169c8d0eb15050ce61cbe3d7...

+Author: Andres Freund <[email protected]>
+Branch: master [18b87b201] 2022-01-13 18:13:41 -0800
+Branch: REL_14_STABLE [dad1539ae] 2022-01-14 10:56:12 -0800
+-->
+     <para>
+      Fix corruption of HOT chains when a RECENTLY_DEAD tuple changes
+      state to fully DEAD during page pruning (Andres Freund)
+     </para>

Even if that happens, it's still pretty unlikely to cause corruption - so
maybe s/corruption/chance of corruption/?


+     <para>
+      This happens when the last transaction that could <quote>see</quote>
+      the tuple ends while the page is being pruned.

The transaction doesn't need to have ended while the page is vacuumed - the
horizon needs to have been "refined/updated" while the page is pruned so that
a tuple version that was first considered RECENTLY_DEAD is now considered
DEAD.  Which can only happen if RecentXmin changed after
vacuum_set_xid_limits(), which only can happen if catalog snapshot
invalidations and other invalidations are processed in vac_open_indexes() and
RecentXmin changed since vacuum_set_xid_limits().  Then a page involving
tuples in a specific "arrangement" need to be encountered.

That's obviously to complicated for the release notes. Trying to make it more
understandable I came up with the following, which still does not seem great:

    This can only happen if transactions, some having performed DDL, commit
    within a narrow window at the start of VACUUM. If VACUUM then prunes a
    page containing several tuple version that started to be removable within
    the aforementioned time window, the bug may cause corruption on that page
    (but no further pages). A tuple that is pointed to by a redirect item
    elsewhere on the page can get removed. [...]


Greetings,

Andres Freund






view thread (8+ messages)  latest in thread

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: [email protected]
  Cc: [email protected], [email protected], [email protected], [email protected]
  Subject: Re: Release notes for February minor releases
  In-Reply-To: <[email protected]>

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

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