Re: Connections hang indefinitely while taking a gin index's LWLock buffer_content lock
Peter Geoghegan <pg@bowt.ie>
From: Peter Geoghegan <pg@bowt.ie>
To: Andrey Borodin <x4mmm@yandex-team.ru>
Cc: chjischj@163.com, Teodor Sigaev <teodor@sigaev.ru>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2018-11-24T00:18:10Z
Lists: pgsql-hackers
On Fri, Nov 23, 2018 at 2:18 AM Andrey Borodin <x4mmm@yandex-team.ru> wrote: > I found no practical way to fix concept of "subtree-lock". Pre-locking all left siblings for cleanup would suffice, but does not look very practical. > GIN Posting tree has no all useful B-tree inventory like left links and high keys for concurrent deletes without "subtree-lock". Significantly changing the design of GIN vacuuming in back branches for a release that's more than a year old is absolutely out of the question. I think that your patch should be evaluated as a new v12 feature, following the revert of 218f51584d5. > Please note, that attached patch do not fix 2nd bug found by Chen in page delete redo. > > I understand that reverting commit 218f51584d5 and returning to long but finite root locks is safest solution Whatever happens with the master branch, I think that reverting commit 218f51584d5 is the only option on the table for the back branches. Its design is based on ideas on locking protocols that are fundamentally incorrect and unworkable. I don't have a lot of faith in our ability to retrofit a design that fixes the issue without causing problems elsewhere. -- Peter Geoghegan
Commits
-
Fix WAL format incompatibility introduced by backpatching of 52ac6cd2d0
- d1166af192ed 9.4.22 landed
- cda5f6575306 9.5.17 landed
- f8a69a68a087 9.6.13 landed
- e23d44016d51 10.8 landed
- 89f39736f484 11.3 landed
-
Fix wrong backpatching of ginRedoDeletePage() deadlock fix
- bf0e5a73be20 9.4.21 landed
-
Fix deadlock in GIN vacuum introduced by 218f51584d5
- fd83c83d0943 12.0 landed
- 2e3bd064e530 10.7 landed
- 9aa94d8536f8 11.2 landed
-
Prevent GIN deleted pages from being reclaimed too early
- 52ac6cd2d0cd 12.0 landed
- ad6ebcfcbb88 9.5.16 landed
- 1cf175c74f10 9.4.21 landed
- cd24b4eaece3 9.6.12 landed
- a0696d29551b 10.7 landed
- dd951dc34a2e 11.2 landed
-
Prevent deadlock in ginRedoDeletePage()
- c6ade7a8cd31 12.0 landed
- 19cf52e6cc33 9.4.21 landed
- f6c44e1b55c1 9.5.16 landed
- 865870374aff 10.7 landed
- 80d4d8d71d57 9.6.12 landed
- 225b5c9c480f 11.2 landed
-
Reduce page locking in GIN vacuum
- 218f51584d5a 10.0 cited
-
Fix race condition in GIN posting tree page deletion.
- ac4ab97ec05e 9.4.0 cited