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

From Вавржин Игорь
Subject [pgsql-ru-general] Re: [pgsql-ru-general] deadlock при drop index concurrently
Date
Msg-id CAHGBwKgxjTARYx=CVCJOyN2rfDkBVZBKCbdBCe=8-X4Mcrd+Sw@mail.gmail.com
Whole thread Raw
In response to [pgsql-ru-general] Re: [pgsql-ru-general] deadlock при drop index concurrently  (Dmitry Igrishin <dmitigr@gmail.com>)
Responses [pgsql-ru-general] Re: [pgsql-ru-general] deadlock при drop index concurrently  (Dmitry Igrishin <dmitigr@gmail.com>)
[pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] deadlock при drop index concurrently  (Oleksii Kliukin <alexk@hintbits.com>)
List pgsql-ru-general
Лог я прочитал :) вопрос в другом: почему конкурентное удаление индекса просто не подаждало, пока локи снимутся, как это описано в документации!? Баг? Или я что-то не понимаю?

23 марта 2017 г. 18:41 пользователь "Dmitry Igrishin" <dmitigr@gmail.com> написал:


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] deadlock при drop index concurrently
Next
From: Dmitry Igrishin
Date:
Subject: [pgsql-ru-general] Re: [pgsql-ru-general] deadlock при drop index concurrently