From: Noah Misch <noah@leadboat.com>
To: Andrey Borodin <x4mmm@yandex-team.ru>
Cc: PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Cc: Michael Paquier <michael@paquier.xyz>
Cc: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Peter Geoghegan <pg@bowt.ie>
Subject: Re: CREATE INDEX CONCURRENTLY does not index prepared xact's data
Date: Sun, 8 Aug 2021 09:37:52 -0700
Message-ID: <20210808163752.GB23176@rfd.leadboat.com> (raw)
In-Reply-To: <5E041A70-4946-489C-9B6D-764DF627A92D@yandex-team.ru>
References: <20210730022548.GA1940096@gust.leadboat.com>
<A345A2B4-5041-4C95-9084-DC1BA83E3328@yandex-team.ru>
<20210730184126.GA2018234@gust.leadboat.com>
<D22DEA09-80DA-4350-839B-0FC0BD0668A4@yandex-team.ru>
<CAH2-Wz=Et8WLvS6d7-BH_yT9b5=cV89fXBmY0T-KgsT7R0=R_A@mail.gmail.com>
<85D32B53-FB25-4F2F-A253-0D7B26F72881@yandex-team.ru>
<DBD361BB-4327-4143-A849-36A262B22CEE@yandex-team.ru>
<341252AE-B633-471E-9FF4-B09FC5D036E2@yandex-team.ru>
<20210807221957.GA169359@rfd.leadboat.com>
<5E041A70-4946-489C-9B6D-764DF627A92D@yandex-team.ru>
On Sun, Aug 08, 2021 at 04:31:07PM +0500, Andrey Borodin wrote:
> > 8 авг. 2021 г., в 03:19, Noah Misch <noah@leadboat.com> написал(а):
> > On Sun, Aug 08, 2021 at 12:00:55AM +0500, Andrey Borodin wrote:
> >> Changes:
> >> 1. Added assert in step 2 (fix for missed invalidation message). I wonder how deep possibly could be RelationBuildDesc() inside RelationBuildDesc() inside RelationBuildDesc() ... ? If the depth is unlimited we, probably, need a better data structure.
> >
> > I don't know either, hence that quick data structure to delay the question.
> > debug_discard_caches=3 may help answer the question. RelationBuildDesc()
> > reads pg_constraint, which is !rd_isnailed. Hence, I expect one can at least
> > get RelationBuildDesc("pg_constraint") inside RelationBuildDesc("user_table").
> I've toyed around with
> $node->append_conf('postgresql.conf', 'debug_invalidate_system_caches_always = 3'); in test.
> I had failures only at most with
> Assert(in_progress_offset < 4);
> See [0] for stack trace. But I do not think that it proves that deeper calls are impossible with other DB schemas.
I didn't find the [0] link in your message; can you send it again? I suspect
no rel can appear more than once in the stack, and all but one rel will be a
system catalog. That said, dynamically growing the array is reasonable, even
if a small maximum depth theoretically exists.
> Step 1. Test for CIC with regular transactions.
> Step 2. Fix
> Step 3. Test for CIC with 2PC
> Step 4. Part of the fix that I'm sure about
> Step 5. Dubious part of fix...
> How to you think, do we have a chance to fix things before next release on August 12th?
No. At a minimum, we still need to convince ourselves that step 5 is correct.
Even if that were already done, commits to released branches get more cautious
in the few days before the wrap date (tomorrow). Once it's committed, you
could contact pgsql-release@postgresql.org to propose an out-of-cycle release.
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-bugs@postgresql.org
Cc: noah@leadboat.com, x4mmm@yandex-team.ru, pgsql-bugs@lists.postgresql.org, michael@paquier.xyz, tgl@sss.pgh.pa.us, pg@bowt.ie
Subject: Re: CREATE INDEX CONCURRENTLY does not index prepared xact's data
In-Reply-To: <20210808163752.GB23176@rfd.leadboat.com>
* 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