powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / race condition при создании новой партиции
4 сообщений из 4, страница 1 из 1
race condition при создании новой партиции
    #39889845
bff7755a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Используем такой код для автоматического создания новых партиций (PostgreSQL 10.6):

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
begin
 insert into <partitioned_table>;
exception when undefined_table then
 begin
   <create_unexistent_partition>
   -- A concurrent txn has created the new partition
   exception when others then end;
   -- Insert data into the new partition
   insert into <partitioned_table>;
 end;
end;



Насколько я понимаю, партиция должна создаваться всегда - либо в текущей транзакции, либо в конкурентной. Но оказалось, что это не так - сегодня столкнулись с ситуацией, когда одна из транзакций не смогла вставить данные в таблицу в течение короткого промежутка времени по причине ее отсутствия. Что я упустил?
...
Рейтинг: 0 / 0
race condition при создании новой партиции
    #39889914
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bff7755a,

Возможно вы получаете исключение не undefined_table , а что-то другое.
Соответственно, вы его не перехватываете и вставка падает.
...
Рейтинг: 0 / 0
race condition при создании новой партиции
    #39889922
bff7755a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vyegorov
bff7755a,

Возможно вы получаете исключение не undefined_table , а что-то другое.
Соответственно, вы его не перехватываете и вставка падает.

Логи говорят, что ошибки были при попытке повторной вставки записи. И ошибки эти вида "relation ... does not exist at character ...".
...
Рейтинг: 0 / 0
race condition при создании новой партиции
    #39890003
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bff7755a,

приведите весь лог (кусок от начала вставок и до конца) . там по ходу создания много что ещё может навернуться, если воссоздаются все индексы, чеки, дефолты , констрайнты, триггера и т.п. -- неплохо бы понять, что ещё в вашем случае может упираться. например у вас может обламываться первая транзакция, а не вторая. (табличку создадут обе, в очередь на локе, вторая -- после отката первой -- и она и закоммитит) например при вставке на каком--либо чеке или нот нулл-е. логи у вас с pid-ами, надеюсь ?

потом иногда создание партиечки выносят в автономии -- т.ч. зря скипнули код создания
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / race condition при создании новой партиции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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