
Further to this, ProcessIncomingNotify seems to hold the lock on the 
listener relation until it's current transaction exits. If the ANALYZE was 
not the source of the error, but was just another victim, does that mean it 
might hold the lock for a very long time if the analyze is lengthy?



At 02:54 PM 3/05/2004, Tom Lane wrote:
>Please dig deeper.

I may have found the problem; all the hung processes show 'async_notify 
waiting' in ps, and the ANALYZE eventually dies with 'tuple concurrently 
updated'.

The routine 'ProcessIncomingNotify' in async.c does indeed try to lock 
pg_listener (even if we're not using NOTIFY/LISTEN). Not sure why the 
ANALYZE is locking the relation, though...but it is locked in AccessShareLock.

I can send a log of my investigations if necessary.



----------------------------------------------------------------
Philip Warner                    |     __---_____
Albatross Consulting Pty. Ltd.   |----/       -  \
(A.B.N. 75 008 659 498)          |          /(@)   ______---_
Tel: (+61) 0500 83 82 81         |                 _________  \
Fax: (+61) 03 5330 3172          |                 ___________ |
Http://www.rhyme.com.au         |                /           \|
                                  |    --________--
PGP key available upon request,  |  /
and from pgp.mit.edu:11371       |/  


Mon, 03 May 2004 18:56:14 +1000
Philip Warner <pjw@rhyme.com.au>
Re: ANALYZE locks pg_listener in EXCLUSIVE for long