On Wed, Nov 27, 2013 at 9:40 AM, Jeff Janes <jeff.ja...@gmail.com> wrote:
> On Wed, Nov 13, 2013 at 8:49 AM, Heikki Linnakangas < > hlinnakan...@vmware.com> wrote: > >> Here's another part of my crusade against xlog cleanup routines. This >> series of patches gets rid of the gin_cleanup() function, which is >> currently used to finish splits of GIN b-tree pages, if the system crashes >> (or an error occurs) between splitting a page and inserting its downlink to >> the parent. >> >> The first three patches just move code around. IMHO they make the code >> more readable, so they should be committed in any case. The meat is in the >> fourth patch. >> >> Thoughts, objections? >> >> Alexander, I'm sorry if this conflicts with your GIN patches. Feel free >> to post the latest versions of your patches against the current master, >> ignoring patches. I can fix the bitrot. That said, I think these >> refactorings will make your code look a little bit nicer too, so you might >> want to rebase because of that anyway. > > > Hi Heikki, > > The commit 04eee1fa9ee80dabf7 of this series causes a self-deadlock in the > LWLock code during the operation below, with it trying to take > an LW_EXCLUSIVE on a high, even-numbered lockid when it already holds the > same lockid. > > CREATE INDEX planet_osm_ways_nodes ON planet_osm_ways USING gin (nodes) > WITH (FASTUPDATE=OFF); > > It happens pretty reliably using osm2pgsql. > > I will try to come up with a simple reproducible demonstration, and stack > trace, over the weekend. > Whatever the problem, it seems to have been fixed in ce5326eed386959aa, "More GIN refactoring". Cheers, Jeff