From: | Peter Geoghegan <pg(at)bowt(dot)ie> |
---|---|
To: | aekorotkov(at)gmail(dot)com |
Cc: | Andres Freund <andres(at)anarazel(dot)de>, chjischj(at)163(dot)com, Teodor Sigaev <teodor(at)sigaev(dot)ru>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Connections hang indefinitely while taking a gin index's LWLock buffer_content lock |
Date: | 2018-12-06 21:50:11 |
Message-ID: | CAH2-WznhkRLYMDjes+n+qpggq7W6hBGsMuw+4yrs15ErJo-14Q@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Thu, Dec 6, 2018 at 12:51 PM Alexander Korotkov <aekorotkov(at)gmail(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2018-12-06 21:55:52 | don't create storage when unnecessary |
Previous Message | Paul Ramsey | 2018-12-06 20:54:18 | Re: Compressed TOAST Slicing |