Re: deadlock in REINDEX

Поиск
Список
Период
Сортировка
От Neil Conway
Тема Re: deadlock in REINDEX
Дата
Msg-id 1045527707.32092.38.camel@tokyo
обсуждение исходный текст
Ответ на Re: deadlock in REINDEX  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: deadlock in REINDEX
Список 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 по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Q: pg_catalog views, OIDs and search_path
Следующее
От: Tom Lane
Дата:
Сообщение: Re: deadlock in REINDEX