Re: deadlock in REINDEX - Mailing list pgsql-hackers

From Neil Conway
Subject Re: deadlock in REINDEX
Date
Msg-id 1045527707.32092.38.camel@tokyo
Whole thread Raw
In response to Re: deadlock in REINDEX  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: deadlock in REINDEX
List pgsql-hackers
On Mon, 2003-02-17 at 18:39, Tom Lane wrote:
> > I was thinking of changing reindex_index() to acquire an AccessShareLock
> > on the index in question, find its parent rel ID, release the lock, then
> > acquire an AccessExclusiveLock on the parent rel, followed by an
> > AccessExclusiveLock on the index in question.
> 
> If you release the lock then I think you are opening yourself to worse
> troubles than this one, having to do with someone renaming/deleting the
> table and/or index out from under you.

Presumably, the renaming/deleting operation acquires an exclusive lock
and then holds it until transaction commit, right? If so, then wouldn't
we still be okay: the REINDEX would lock the index in access share mode,
find the OID of the heap rel, unlock the index, lock the heap rel in
access exclusive mode, then try to re-open & lock the index, find that
it no longer exists and then elog(ERROR).

Whether or not that solution actually works, ISTM there must be *some*
method of locking that is free of deadlocks -- saying "oh well, it's not
a common case anyway" doesn't strike me as being satisfactory :-\

Cheers,

Neil
-- 
Neil Conway <neilc@samurai.com> || PGP Key ID: DB3C29FC





pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Q: pg_catalog views, OIDs and search_path
Next
From: Tom Lane
Date:
Subject: Re: deadlock in REINDEX