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: aekorotkov@gmail.com
Cc: Andres Freund <andres@anarazel.de>, chjischj@163.com,
Teodor Sigaev <teodor@sigaev.ru>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2018-12-06T21:50:11Z
Lists: pgsql-hackers
On Thu, Dec 6, 2018 at 12:51 PM Alexander Korotkov <aekorotkov@gmail.com> wrote: > So, algorithm introduced by 218f51584d5 is broken. It tries to > guarantee that there are no inserters in the subtree by placing > cleanup lock to subtree root, assuming that inserter holds pins on the > path from root to leaf. But due to concurrent splits of internal > pages the pins held can be not relevant to actual path. I don't see > the way to fix this easily. So, I think we should revert it from back > branches and try to reimplement that in master. > > However, I'd like to note that 218f51584d5 introduces two changes: > 1) Cleanup locking only if there pages to delete > 2) Cleanup locking only subtree root > The 2nd one is broken. But the 1st one seems still good for me and > useful, because in vast majority of cases vacuum doesn't delete any > index pages. So, I propose to revert 218f51584d5, but leave there > logic, which locks root for cleanup only once there are pages to > delete. Any thoughts? Can you post a patch that just removes the 2nd part, leaving the still-correct first part? Your proposal sounds reasonable, but I'd like to see what you have in mind in detail before commenting. Thanks -- 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