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

From: Вавржин Игорь <igor(dot)vavrjin(at)gmail(dot)com>
To: Dmitry Igrishin <dmitigr(at)gmail(dot)com>
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: [pgsql-ru-general] deadlock при drop index concurrently
Date: 2017-03-23 13:09:40
Message-ID: CAHGBwKgxjTARYx=CVCJOyN2rfDkBVZBKCbdBCe=8-X4Mcrd+Sw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-ru-general

Лог я прочитал :) вопрос в другом: почему конкурентное удаление индекса
просто не подаждало, пока локи снимутся, как это описано в документации!?
Баг? Или я что-то не понимаю?

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

>
>
> 2017-03-23 12:45 GMT+03:00 Вавржин Игорь <igor(dot)vavrjin(at)gmail(dot)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.
>

In response to

Responses

Browse pgsql-ru-general by date

  From Date Subject
Next Message Dmitry Igrishin 2017-03-23 13:28:21 Re: [pgsql-ru-general] deadlock при drop index concurrently
Previous Message Dmitry Igrishin 2017-03-23 11:41:57 Re: [pgsql-ru-general] deadlock при drop index concurrently