On Sun, Jun 30, 2019 at 7:30 PM Goel, Dhruv <goeld...@amazon.com> wrote:
> > On Jun 10, 2019, at 1:20 PM, Goel, Dhruv <goeld...@amazon.com> wrote:
> >> On Jun 9, 2019, at 5:33 PM, Tom Lane <t...@sss.pgh.pa.us> wrote:
> >> Andres Freund <and...@anarazel.de> writes:
> >>> On June 9, 2019 8:36:37 AM PDT, Tom Lane <t...@sss.pgh.pa.us> wrote:
> >>>> I think you are mistaken that doing transactional updates in pg_index
> >>>> is OK.  If memory serves, we rely on xmin of the pg_index row for
> >>>> purposes such as detecting whether a concurrently-created index is safe
> >>>> to use yet.
> >
> > I took a deeper look regarding this use case but was unable to find more 
> > evidence. As part of this patch, we essentially make concurrently-created 
> > index safe to use only if transaction started after the xmin of Phase 3. 
> > Even today concurrent indexes can not be used for transactions before this 
> > xmin because of the wait (which I am trying to get rid of in this patch), 
> > is there any other denial of service you are talking about? Both the other 
> > states indislive, indisready can be transactional updates as far as I 
> > understand. Is there anything more I am missing here?
>
> I did some more concurrency testing here through some python scripts which 
> compare the end state of the concurrently created indexes. I also back-ported 
> this patch to PG 9.6 and ran some custom concurrency tests (Inserts, Deletes, 
> and Create Index Concurrently) which seem to succeed. The intermediate states 
> unfortunately are not easy to test in an automated manner, but to be fair 
> concurrent indexes could never be used for older transactions. Do you have 
> more inputs/ideas on this patch?

I noticed that check-world passed several times with this patch
applied, but the most recent CI run failed in multiple-cic:

+error in steps s2i s1i: ERROR:  cache lookup failed for index 26303

https://travis-ci.org/postgresql-cfbot/postgresql/builds/555472214

-- 
Thomas Munro
https://enterprisedb.com


Reply via email to