powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / pg_advisory_lock - странное сообщение
5 сообщений из 5, страница 1 из 1
pg_advisory_lock - странное сообщение
    #38716006
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. В процессе работы по нужде был прибит долгий скрипт,
в котором вызывалось
Код: sql
1.
SELECT  pg_advisory_lock(<num>);


Необходимо было снять эту блокировку из другого соединения.
Вот тут-то и возникла трабла.
Вызовом pg_advisory_unlock она не снималась, выдавалось сообщение
Код: plaintext
WARNING:  you don't own a lock of type ExclusiveLock
Пользователь один и тот же, разные сессии с разных ip.
Вызов pg_advisory_unlock_all() также не помог, блокировка не снималась.
Потом, на всякий случай перед этими вызовами я пробовал
Код: sql
1.
SELECT  pg_advisory_lock(<num>);


в той же сессии из которой вызывалось unlock, при этом
этот запрос зависал с флагом wait.
Причём, сам запрос можно было отменить, но сам по себе он не "отлипал".
Даже если я рвал остальные коннекты, где применялась эта фича.
Наконец, на сервере выполнил
service postgresql reload
после этого вызывал pg_advisory_lock с тем номером, который требовался освободить,
получал false, но уже без warning, после чего
уже вызовом
Код: sql
1.
SELECT  pg_advisory_unlock(<num>);


блокировка штатно снималась.
Вопрос - есть ли более изящное решение, чтобы освободить нумерок?
Код: plaintext
PostgreSQL 9.1.9 on x86_64-unknown-linux-gnu, compiled by gcc-4.4.real (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3, 64-bit
...
Рейтинг: 0 / 0
pg_advisory_lock - странное сообщение
    #38716035
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОКТОГЕНЗдравствуйте. В процессе работы по нужде был прибит долгий скрипт,
в котором вызывалось
Код: sql
1.
SELECT  pg_advisory_lock(<num>);


Необходимо было снять эту блокировку из другого соединения.
Вот тут-то и возникла трабла.
Вызовом pg_advisory_unlock она не снималась, выдавалось сообщение
Код: plaintext
WARNING:  you don't own a lock of type ExclusiveLock
Пользователь один и тот же, разные сессии с разных ip.
Вызов pg_advisory_unlock_all() также не помог, блокировка не снималась.
Потом, на всякий случай перед этими вызовами я пробовал
Код: sql
1.
SELECT  pg_advisory_lock(<num>);


в той же сессии из которой вызывалось unlock, при этом
этот запрос зависал с флагом wait.
Причём, сам запрос можно было отменить, но сам по себе он не "отлипал".
Даже если я рвал остальные коннекты, где применялась эта фича.
Наконец, на сервере выполнил
service postgresql reload
после этого вызывал pg_advisory_lock с тем номером, который требовался освободить,
получал false, но уже без warning, после чего
уже вызовом
Код: sql
1.
SELECT  pg_advisory_unlock(<num>);


блокировка штатно снималась.
Вопрос - есть ли более изящное решение, чтобы освободить нумерок?
Код: plaintext
PostgreSQL 9.1.9 on x86_64-unknown-linux-gnu, compiled by gcc-4.4.real (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3, 64-bit


уважаемый троцкей, перелогиньтесь

RTFMpg_advisory_lock(key bigint) void Obtain exclusive session level advisory lock
false вы можете получить из-по try -модификаций ф-й.
...
Рейтинг: 0 / 0
pg_advisory_lock - странное сообщение
    #38716040
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОКТОГЕН,

авторВопрос - есть ли более изящное решение, чтобы освободить нумерок?

Снять через pg_terminate_backend(pid) сессию которая тот advisory lock держит
(внимание - superuser only... если от обычного пользователя надо делайте security definer обертку).
...
Рейтинг: 0 / 0
pg_advisory_lock - странное сообщение
    #38716231
buddy_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОКТОГЕН,

Maxim Boguk подсказывает правильное решение - вы убили скрипт, но не убили сессию с БД, в которой этот лок до сих пор захвачен.

просто маленькое уточнение - pg_terminate_backend можно запускать для сессий от того же пользователя.
...
Рейтинг: 0 / 0
pg_advisory_lock - странное сообщение
    #38716532
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buddy_ekbpg_terminate_backend можно запускать для сессий от того же пользователя.

Только для версий начиная с 9.2.0 (впрочем 9.1 и более старым уже давно пора обновляться).
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / pg_advisory_lock - странное сообщение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]