Re: Connections hang indefinitely while taking a gin index's LWLockbuffer_content lock(PG10.7)
От | Alexander Korotkov |
---|---|
Тема | Re: Connections hang indefinitely while taking a gin index's LWLockbuffer_content lock(PG10.7) |
Дата | |
Msg-id | CAPpHfdsCLdv-FfAk+h_8rjVpJ0AkW1schAcs10kXqtMO_8W_VA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Connections hang indefinitely while taking a gin index's LWLockbuffer_content lock(PG10.7) (Andrey Borodin <x4mmm@yandex-team.ru>) |
Список | pgsql-hackers |
On Mon, Sep 30, 2019 at 8:38 AM Andrey Borodin <x4mmm@yandex-team.ru> wrote: > > > 29 сент. 2019 г., в 21:27, Alexander Korotkov <a.korotkov@postgrespro.ru> написал(а): > > > > Patch with fix is attached. Idea is simple: ginScanToDelete() now > > keeps exclusive lock on left page eliminating the need to relock it. > > So, we preserve left-to-right locking order and can't deadlock with > > ginStepRight(). > > In this function ginDeletePage(gvs, blkno, BufferGetBlockNumber(me->leftBuffer),...) > we are going to reread buffer > lBuffer = ReadBufferExtended(gvs->index, MAIN_FORKNUM, leftBlkno, > RBM_NORMAL, gvs->strategy); > Is it OK? That's related not only to left buffer. We also could pass buffer instead of deleteBlkno. And with some code changes it's also possible to pass buffer instead of parentBlkno. But I decided to keep code changes minimal at least for backpatch version. We could apply such optimization to master as a separate patch. ------ Alexander Korotkov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company
В списке pgsql-hackers по дате отправления: