Re: BUG #17949: Adding an index introduces serialisation anomalies.
Dmitry Dolgov <9erthalion6@gmail.com>
From: Dmitry Dolgov <9erthalion6@gmail.com>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: artem.anisimov.255@gmail.com, pgsql-bugs@lists.postgresql.org, Teodor Sigaev <teodor@sigaev.ru>, Heikki Linnakangas <hlinnaka@iki.fi>
Date: 2023-06-21T09:04:21Z
Lists: pgsql-bugs
> On Wed, Jun 21, 2023 at 11:20:28AM +1200, Thomas Munro wrote: > On Wed, Jun 21, 2023 at 10:54 AM Thomas Munro <thomas.munro@gmail.com> wrote: > > This is probably going to go faster if I CC the authors of commit > > 0bef1c06. Any ideas about how we're missing rw-conflicts under high > > concurrency? > > I guess one (probably stupid) question I have: where is the > CheckForSerializableConflictIn(rootPostingTree) that I was expecting > to see when writing to an existing posting tree? IIUC that should > pair with PredicateLockPage(btree->index, rootPostingTree, snapshot) > when reading. I can't find it either, but based on my superficial investigation this particular reproducer doesn't seem to hit posting trees functionality at all. What I observe is the inserting transaction uses ginHeapTupleFastCollect + ginHeapTupleFastInsert, and the corresponding commentary says that serialization in this case depends on the metabuffer: /* * An insertion to the pending list could logically belong anywhere in the * tree, so it conflicts with all serializable scans. All scans acquire a * predicate lock on the metabuffer to represent that. */ Now the reading transaction actually does PredicateLockPage on the metabuffer inside scanPendingInsert, but strangely enough it doesn't lock anything because the SerializationNeededForRead condition is false. I'm trying to verify if it's somehow a part of the issue, or something is broken on my side.
Commits
-
Fix race in SSI interaction with bitmap heap scan.
- 814f3c8e4868 11.21 landed
- 17b8887c29e5 12.16 landed
- 8976ac5c5c00 13.12 landed
- 3f7d3a77e18d 14.9 landed
- ab265e98500b 15.4 landed
- bcc93a389ce3 17.0 landed
- d03d9a2614fd 16.0 landed
-
Fix race in SSI interaction with gin fast path.
- 13f127800fed 11.21 landed
- 255a925d333b 12.16 landed
- fc15473840bc 13.12 landed
- fb663f38790e 14.9 landed
- d34aa0a2f4f3 15.4 landed
- 126552c85c1c 17.0 landed
- 12529028a4e5 16.0 landed
-
Fix race in SSI interaction with empty btrees.
- 0048c3b51549 11.21 landed
- fe88497b4d0b 12.16 landed
- 8f705d7b9d01 13.12 landed
- ae6d536ed0dc 14.9 landed
- 0f275b0ee8e4 15.4 landed
- f9b7fc651a99 17.0 landed
- 0cb1fb2c9bf8 16.0 landed
-
Re-think predicate locking on GIN indexes.
- 0bef1c0678d9 11.0 cited