Here is the pg_locks output.
Alvaro Herrera wrote:
Jerry Gamache wrote:
I was not able to repro with default parameters, or at 15s naptime,
and at 1s naptime I got only 1deadlock in 3 tests.
This time the deadlock was with table_a, table_b and table_c
(table_x and table_y were not involved).
18395 | database1 | autovacuum: ANALYZE public.table_a
18406 | database1 | autovacuum: ANALYZE public.table_b
18510 | database1 |
: CREATE UNIQUE INDEX index_bg ON table_b
USING btree (col_g);
18567 | database1 | autovacuum: ANALYZE public.table_c
18802 | database1 | select procpid,datname,current_query from
pg_stat_activity where datname='database1' ORDER BY procpid;
There is a FK constraint between table_a and table_b, but table_c
does not have any direct constraint relation with the other 2
tables.
The logs show that the autovacuum of table_b was canceled 20 minutes
ago, but the thread is still alive and blocked.
That's pretty strange. Can we see a pg_locks snapshot? (Please attach
as a text file so that it doesn't get word-wrapped)
database1=# select
locktype,database,relation,virtualxid,virtualtransaction,pid,mode,granted from
pg_locks where pid IN (SELECT procpid FROM pg_stat_activity WHERE
datname='database1') ORDER BY pid;
locktype | database | relation | virtualxid | virtualtransaction | pid |
mode | granted
------------+----------+----------+------------+--------------------+-------+--------------------------+---------
relation | 20162 | 20893 | | 4/72 | 18395 |
AccessShareLock | t
virtualxid | | | 4/72 | 4/72 | 18395 |
ExclusiveLock | t
relation | 20162 | 20829 | | 4/72 | 18395 |
AccessShareLock | t
relation | 20162 | 20894 | | 4/72 | 18395 |
AccessShareLock | t
relation | 20162 | 20892 | | 4/72 | 18395 |
AccessShareLock | t
relation | 20162 | 20515 | | 4/72 | 18395 |
ShareUpdateExclusiveLock | t
relation | 20162 | 20891 | | 3/53 | 18406 |
AccessShareLock | t
relation | 20162 | 20813 | | 3/53 | 18406 |
AccessShareLock | t
relation | 20162 | 20490 | | 3/53 | 18406 |
ShareUpdateExclusiveLock | t
virtualxid | | | 3/53 | 3/53 | 18406 |
ExclusiveLock | t
relation | 20162 | 20490 | | 8/162 | 18510 |
ShareLock | f
virtualxid | | | 8/162 | 8/162 | 18510 |
ExclusiveLock | t
relation | 20162 | 20247 | | 7/238 | 18567 |
ShareUpdateExclusiveLock | t
relation | 20162 | 20872 | | 7/238 | 18567 |
AccessShareLock | t
relation | 20162 | 20881 | | 7/238 | 18567 |
AccessShareLock | t
relation | 20162 | 20880 | | 7/238 | 18567 |
AccessShareLock | t
relation | 20162 | 20878 | | 7/238 | 18567 |
AccessShareLock | t
relation | 20162 | 20873 | | 7/238 | 18567 |
AccessShareLock | t
virtualxid | | | 7/238 | 7/238 | 18567 |
ExclusiveLock | t
relation | 20162 | 20876 | | 7/238 | 18567 |
AccessShareLock | t
relation | 20162 | 20882 | | 7/238 | 18567 |
AccessShareLock | t
relation | 20162 | 20879 | | 7/238 | 18567 |
AccessShareLock | t
relation | 20162 | 20797 | | 7/238 | 18567 |
AccessShareLock | t
relation | 20162 | 20877 | | 7/238 | 18567 |
AccessShareLock | t
relation | 0 | 2676 | | 1/611 | 18802 |
AccessShareLock | t
relation | 0 | 2672 | | 1/611 | 18802 |
AccessShareLock | t
virtualxid | | | 1/611 | 1/611 | 18802 |
ExclusiveLock | t
relation | 0 | 1262 | | 1/611 | 18802 |
AccessShareLock | t
relation | 20162 | 11042 | | 1/611 | 18802 |
AccessShareLock | t
relation | 0 | 2671 | | 1/611 | 18802 |
AccessShareLock | t
relation | 0 | 2677 | | 1/611 | 18802 |
AccessShareLock | t
relation | 20162 | 10969 | | 1/611 | 18802 |
AccessShareLock | t
relation | 0 | 1260 | | 1/611 | 18802 |
AccessShareLock | t
(33 rows)
database1=# select procpid,datname,current_query from pg_stat_activity where
datname='database1' ORDER BY procpid;
procpid | datname |
current_query
---------+------------------+---------------------------------------------------------------------------------------------------------------
18395 | database1 | autovacuum: ANALYZE public.table_a
18406 | database1 | autovacuum: ANALYZE public.table_b
18510 | database1 |
: CREATE UNIQUE INDEX index_bg ON table_b USING
btree (col_g);
18567 | database1 | autovacuum: ANALYZE public.table_c
18802 | database1 | select procpid,datname,current_query from
pg_stat_activity where datname='database1' ORDER BY procpid;
(5 rows)
--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs