[pgsql-ru-general] Re: [pgsql-ru-general] deadlock при drop index concurrently - Mailing list pgsql-ru-general

From Dmitry Igrishin
Subject [pgsql-ru-general] Re: [pgsql-ru-general] deadlock при drop index concurrently
Date
Msg-id CAAfz9KMkxs4S6qtVaaQYbTvZ1gxBJrfaE8+p5WGx7-DYkenw7g@mail.gmail.com
Whole thread Raw
In response to [pgsql-ru-general] deadlock при drop index concurrently  (Вавржин Игорь <igor.vavrjin@gmail.com>)
Responses [pgsql-ru-general] Re: [pgsql-ru-general] deadlock при drop index concurrently  (Вавржин Игорь <igor.vavrjin@gmail.com>)
List pgsql-ru-general


2017-03-23 12:45 GMT+03:00 Вавржин Игорь <igor.vavrjin@gmail.com>:
Вот что видим в логах:

Mar 23 15:45:07 mdb postgres[26481]: [177-1] user=pgsql,db=geo,client=10.77.255.13 ERROR:  deadlock detected
Mar 23 15:45:07 mdb postgres[26481]: [177-2] user=pgsql,db=geo,client=10.77.255.13 DETAIL:  Process 26481 waits for ShareLock on virtual transaction 8/29343079; blocked by process 15087.
Mar 23 15:45:07 mdb postgres[26481]: [177-3]        Process 15087 waits for AccessExclusiveLock on relation 24694 of database 17701; blocked by process 26481.
Mar 23 15:45:07 mdb postgres[26481]: [177-4]        Process 26481: DROP INDEX CONCURRENTLY IF EXISTS geo_11_2gis_get_route_platform_ids_from_json
Mar 23 15:45:07 mdb postgres[26481]: [177-5]        
Mar 23 15:45:07 mdb postgres[26481]: [177-6]        Process 15087: LOCK TABLE geo_11 IN ACCESS EXCLUSIVE MODE
Mar 23 15:45:07 mdb postgres[26481]: [177-7] user=pgsql,db=geo,client=10.77.255.13 HINT:  See server log for query details.
Mar 23 15:45:07 mdb postgres[26481]: [177-8] user=pgsql,db=geo,client=10.77.255.13 STATEMENT:  DROP INDEX CONCURRENTLY IF EXISTS geo_11_2gis_get_route_platform_ids_from_json
Mar 23 15:45:07 mdb postgres[26481]: [177-9]

кто-нибудь может объяснить откуда мог взяться при указании конкурентности дедлок?
версия postgres 9.4.4
Судя по тому, что написано, процесс 15087 получил некий уровень блокировки (скажем, ShareLock), потом запустил процесс 26481 для конкурентного создания индекса (которому требуется ShareLock), а потом затребовал блокировку уровня AccessExclusiveLock, которую получить не может, так как процесс 26481 ждёт получения блокировки уровня ShareLock.

pgsql-ru-general by date:

Previous
From: Dmitry Igrishin
Date:
Subject: [pgsql-ru-general] Re: [pgsql-ru-general] сделать ALTER TABLE varchar в TEXT
Next
From: Вавржин Игорь
Date:
Subject: [pgsql-ru-general] Re: [pgsql-ru-general] deadlock при drop index concurrently