Re: Connections hang indefinitely while taking a gin index's LWLock buffer_content lock
Alexander Korotkov <aekorotkov@gmail.com>
From: Alexander Korotkov <aekorotkov@gmail.com>
To: Andrey Borodin <x4mmm@yandex-team.ru>
Cc: Peter Geoghegan <pg@bowt.ie>, Andres Freund <andres@anarazel.de>,
chenhj <chjischj@163.com>, Teodor Sigaev <teodor@sigaev.ru>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2018-12-13T12:03:54Z
Lists: pgsql-hackers
On Wed, Dec 12, 2018 at 4:08 PM Andrey Borodin <x4mmm@yandex-team.ru> wrote: > > 12 дек. 2018 г., в 3:26, Alexander Korotkov <aekorotkov@gmail.com> написал(а): > > > > BTW, I still can't see you're setting deleteXid field of > > ginxlogDeletePage struct anywhere. > Oops. Fixed. > > > > Also, I note that protection against re-usage of recently deleted > > pages is implemented differently than it is in B-tree. > > 1) You check TransactionIdPrecedes(GinPageGetDeleteXid(page), > > RecentGlobalDataXmin)), while B-tree checks > > TransactionIdPrecedes(opaque->btpo.xact, RecentGlobalXmin). Could you > > clarify why do we use RecentGlobalDataXmin instead of RecentGlobalXmin > > here? > As far as I understand RecentGlobalDataXmin may be slightly farther than RecentGlobalXmin in case when replication_slot_catalog_xmin is holding RecentGlobalXmin. And GIN is never used by catalog tables. But let's use RecentGlobalXmin like in B-tree. > > > 2) B-tree checks this condition both before putting page into FSM and > > after getting page from FSM. You're checking only after getting page > > from FSM. Approach of B-tree looks better for me. It's seems more > > consistent when FSM pages are really free for usage. > Fixed. Thank you. I've revised your patch and pushed it. As long as two other patches in this thread. ------ Alexander Korotkov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company
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