Re: REINDEX deadlock - Postgresql -9.1

From: Anoop K <anoopk6(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Pavan Deolasee <pavan(dot)deolasee(at)gmail(dot)com>, Scott Marlowe <scott(dot)marlowe(at)gmail(dot)com>, pgsql-general(at)postgresql(dot)org, Venkatraju TV <venkatraju(at)gmail(dot)com>
Subject: Re: REINDEX deadlock - Postgresql -9.1
Date: 2013-02-08 04:04:27
Message-ID: CADK_1h+bcNJf-pcy5PCan_ah=P-SHCns1h4LpKqcjN1BQLi+HQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

REINDEX was for the whole database. It seems REINDEX was blocked by the <*idle
in transaction*> process.

What we are not able to explain is how that connection went in to <*idle in
transaction*> state. The app stacktrace confirms that app (JDBC) is trying
to open a connection. We do close connection after use.
So can't think how transaction went in to idle state.

Thanks
Anoop

On Fri, Feb 8, 2013 at 12:14 AM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:

> Pavan Deolasee <pavan(dot)deolasee(at)gmail(dot)com> writes:
> > Sorry, I was going to ask what REINDEX was really indexing ? System
> > tables ?
>
> The stack trace for the REINDEX process includes ReindexDatabase(), so
> if it was running as a superuser it would be trying to reindex system
> catalogs too. We don't actually know that the particular table it's
> working on at the moment is a system catalog, but that seems like a
> fairly good guess. The process that's blocked in startup is definitely
> blocked on somebody's exclusive lock (or at least exclusive lock
> request) on a system catalog index, and there are not that many
> operations besides REINDEX that would take out such a lock.
>
> I'm guessing that something holds a lock (maybe only AccessShareLock)
> on a system catalog index, and REINDEX is blocked trying to get
> exclusive lock on that index, and then all incoming processes are
> queuing up behind REINDEX's request, since they'll all be trying
> to open the same set of catcache-supporting indexes.
>
> > ISTM that the idle in transaction connection was holding some
> > kind of a heavy weight lock on one of the catalog tables and that may
> > be causing all other transactions to just wait.
>
> It doesn't need to have been an exclusive lock to block REINDEX.
> I suspect this theory is correct otherwise, because if it were a
> true deadlock the deadlock detector should have noticed it. If it's
> just "everybody is blocked behind that idle transaction", the deadlock
> detector will not think that it should do anything about it.
>
> regards, tom lane
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Pavel Stehule 2013-02-08 05:32:06 Re: pl/java for postgresql 9.2
Previous Message Michael Harris 2013-02-08 00:19:38 Re: Hot Standby has PANIC: WAL contains references to invalid pages