Re: Connections hang indefinitely while taking a gin index's LWLockbuffer_content lock
От | Alexander Korotkov |
---|---|
Тема | Re: Connections hang indefinitely while taking a gin index's LWLockbuffer_content lock |
Дата | |
Msg-id | CAPpHfdue+XdjscGY5kiWEyjTY2zzcortuZfPxGZb5=m24zBhGA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Connections hang indefinitely while taking a gin index's LWLockbuffer_content lock (Simon Riggs <simon@2ndquadrant.com>) |
Ответы |
Re: Connections hang indefinitely while taking a gin index's LWLockbuffer_content lock
Re: Connections hang indefinitely while taking a gin index's LWLockbuffer_content lock |
Список | pgsql-hackers |
On Thu, Mar 21, 2019 at 9:26 PM Simon Riggs <simon@2ndquadrant.com> wrote: > On Thu, 13 Dec 2018 at 14:48, Alexander Korotkov <aekorotkov@gmail.com> wrote: >> On Thu, Dec 13, 2018 at 10:46 PM Andres Freund <andres@anarazel.de> wrote: >> > On 2018-12-13 22:40:59 +0300, Alexander Korotkov wrote: >> > > It doesn't mater, because we release all locks on every buffer at one >> > > time. The unlock order can have effect on what waiter will acquire >> > > the lock next after ginRedoDeletePage(). However, I don't see why one >> > > unlock order is better than another. Thus, I just used the rule of >> > > thumb to not change code when it's not necessary for bug fix. >> > >> > I think it's right to not change unlock order at the same time as a >> > bugfix here. More generally I think it can often be useful to default >> > to release locks in the inverse order they've been acquired - if there's >> > any likelihood that somebody will acquire them in the same order, that >> > ensures that such a party would only need to wait for a lock once, >> > instead of being woken up for one lock, and then immediately having to >> > wait for the next one. >> >> Good point, thank you! > > > It's been pointed out to me that 52ac6cd2d0cd70e01291e0ac4ee6d068b69bc478 > introduced a WAL incompatibility that has not been flagged. > > In ginRedoDeletePage() we use the struct directly to read the WAL record, so if a WAL record was written prior to 52ac6cd2d0cd70e01291e0ac4ee6d068b69bc478,yet read by code at 52ac6cd2d0cd70e01291e0ac4ee6d068b69bc478 or later then we willhave problems, since deleteXid will not be set correctly. > > It seems this should not have been backpatched. > > Please give your assessment. Oh, right. This is my fault. However, I think this still can be backpatched correctly. We can determine whether xlog record data contains deleteXid by its size. See the attached patch. I haven't test this yet. I'm going to test it. If OK, then push. ------ Alexander Korotkov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company
Вложения
В списке pgsql-hackers по дате отправления: