lock conversion denied (215) или lock denied (216)
lock conversion denied (215) или lock denied (216)
Firebird 1.0.3 Classic for Linux
Perl скрипт (DBD-InterBase-0.43) запускает несколько параллельных процессов, каждый из которых подключается к базе, и делает select и последующий update view. view представляет собой join двух других таблиц. Триггер на view before update обновляет одну из первых таблиц и вставляет данные в третью таблицу.
Редко (несколько раз в сутки, скрипт запускается каждые 5 минут) выскакивает ошибка
-deadlock
-page 165, page type 5 lock conversion denied (215)
Чаще всего на вызове fetchrow_array (при select), реже при вызове do (update). Пару раз выскочило:
-page 165, page type 5 lock denied (216)
Ошибки записываются в interbase.log. Страница одна и та же. После backup/restore изменился только номер страницы, ошибка не исчезла.
Замечено, что ошибки вылезают чаще, если параллельно установлено соединение с базой из EMS InterBase & FireBird Manager 3.
Что это за ошибки?
Это баг сервера, или я чего не так сделал?
Я так понимаю, что параллельные запросы не должны вызывать таких серьезных ошибок?
Perl скрипт (DBD-InterBase-0.43) запускает несколько параллельных процессов, каждый из которых подключается к базе, и делает select и последующий update view. view представляет собой join двух других таблиц. Триггер на view before update обновляет одну из первых таблиц и вставляет данные в третью таблицу.
Редко (несколько раз в сутки, скрипт запускается каждые 5 минут) выскакивает ошибка
-deadlock
-page 165, page type 5 lock conversion denied (215)
Чаще всего на вызове fetchrow_array (при select), реже при вызове do (update). Пару раз выскочило:
-page 165, page type 5 lock denied (216)
Ошибки записываются в interbase.log. Страница одна и та же. После backup/restore изменился только номер страницы, ошибка не исчезла.
Замечено, что ошибки вылезают чаще, если параллельно установлено соединение с базой из EMS InterBase & FireBird Manager 3.
Что это за ошибки?
Это баг сервера, или я чего не так сделал?
Я так понимаю, что параллельные запросы не должны вызывать таких серьезных ошибок?
Re: lock conversion denied (215) или lock denied (216)
Строка соединения везде одинаковая?gelin писал(а):Firebird 1.0.3 Classic for Linux
Perl скрипт (DBD-InterBase-0.43) запускает несколько параллельных процессов, каждый из которых подключается к базе, и делает select и последующий update view. view представляет собой join двух других таблиц. Триггер на view before update обновляет одну из первых таблиц и вставляет данные в третью таблицу.
Редко (несколько раз в сутки, скрипт запускается каждые 5 минут) выскакивает ошибка
-deadlock
-page 165, page type 5 lock conversion denied (215)
Чаще всего на вызове fetchrow_array (при select), реже при вызове do (update). Пару раз выскочило:
-page 165, page type 5 lock denied (216)
Ошибки записываются в interbase.log. Страница одна и та же. После backup/restore изменился только номер страницы, ошибка не исчезла.
Замечено, что ошибки вылезают чаще, если параллельно установлено соединение с базой из EMS InterBase & FireBird Manager 3.
Что это за ошибки?
Это баг сервера, или я чего не так сделал?
Я так понимаю, что параллельные запросы не должны вызывать таких серьезных ошибок?
У кадого процесса своё содинение с базой или пытаешься разделять одно?
Re: lock conversion denied (215) или lock denied (216)
Merlin писал(а):Строка соединения везде одинаковая?
У кадого процесса своё содинение с базой или пытаешься разделять одно?
Код: Выделить всё
...
$count = 0;
foreach $ipid (keys %ipdev)
{
if($count >= $conf{max_threads})
{
last if(wait() == -1);
}
if(!fork())
{
child(\$ipdev{$ipid});
}
}
while(wait() != -1)
{}
...
sub child
{
...
$dsn = "dbi:InterBase:db=$conf{db_name}";
$dsn .= ";ib_dialect=3";
$dsn .= ";ib_role=$conf{db_role}" if($conf{db_role});
$dbh = DBI->connect($dsn, $conf{db_user}, $conf{db_pass})
or die("can't connect to database $conf{db_name}\n");
$dbh->{AutoCommit} = 0;
...
$dbh->do($sql) or die("can't execute '$sql'\n");
...
$dbh->commit();
$dbh->disconnect();
exit 0;
}
У каждого свое.
Может это происходить из-за каких-то проблем с доступом к файлу isc1_lock.hostname?
Я запускаю interbase не от рута, а от пользователя ibase.
# id ibase
uid=1004(ibase) gid=1004(ibase) groups=1004(ibase)
# ls -l
-rw-rw-rw- 1 ibase ibase 98304 Dec 18 13:58 isc_lock1.stat-server
inetd.conf:
gds_db stream tcp nowait.30000 ibase /opt/interbase/bin/gds_inet_server gds_inet_server # InterBase Database Remote Server
Я запускаю interbase не от рута, а от пользователя ibase.
# id ibase
uid=1004(ibase) gid=1004(ibase) groups=1004(ibase)
# ls -l
-rw-rw-rw- 1 ibase ibase 98304 Dec 18 13:58 isc_lock1.stat-server
inetd.conf:
gds_db stream tcp nowait.30000 ibase /opt/interbase/bin/gds_inet_server gds_inet_server # InterBase Database Remote Server
Ну. В данный момент устанавливается два одновременных подключения к базе. Если в это же время установлено длительное подключение из какой-нибудь утилиты администрирования (EMS IBManager, BlazeTop), ошибка вылезает в 30-50% запусков. Уже неплохо? А если увеличить число одновременных подключений?...
Надо попробовать...
Надо попробовать...
Ситуация у всех (у кого эта ошибка происходит) примерно одинаковаяdimitr писал(а):Если "редко (несколько раз в сутки)" - это с завидной регулярностью, то как мне ее ловить прикажешь? Я так двое суток под отладчиком могу прождать...
Есть мысль, что делается это с помощью скриптов, уровень изоляции транзакций по-умолчанию=snapshot.gelin писал(а):запускает несколько параллельных процессов, каждый из которых подключается к базе, и делает select и последующий update
Сейчас мы везде стали указывать read_committed. Ошибки стали реже (целый месяц не было). Однако, уже в этом году, вновь получили ошибку на одном объекте.
Беда в том, что база при этой ошибке портится.
Ждем, Дмитрий, твоей помощи.
Вообще-то, по условиям задачи (сбор по SNMP статистики по интерфейсам и запихивание в базу) нет необходимости в нескольких соединениях с базой. Правда приходится помучиться с IPC.VD писал(а):Попробуй
...
и напиши, что получиться.
В общем, я пошел другим, для меня, пожалуй, более эффективным, путем: одно соединение с базой в основном процессе, дочерние процессы параллельно собирают статистику и передают ее основному процессу, который уже вставляет.
Так что, наверное, не попробую.
У нас эта ошибка только на фри. Базы там сильно загружены.dimitr писал(а): Вадим, напомни, у вас этот баг только на фри воспроизводится? Или на винде просто не пробовали?
Получаем мы ее достаточно случайно. Как я писал выше, в последний раз продержались месяц.
Думаю, что нужно просить людей, которые могут воспроизвести эту ошибку прислать тебе базу, скрипты и данные, при загрузке которых эта ошибка возникает.
Если таких людей, даже с помощью DK, найти не сможем, то
сделай отладочную версию с записью в лог всего, чего можно и мы соберем ее на фри и поставим на боевой сервер. Админ сказал, что больших логов не боиться. И будем ждать.
у нас тоже встречается
используем трехзвенку (java-fb). При использовании jaybird 1.5.0 вылезало.
org.firebirdsql.jdbc.FBSQLException: GDS Exception 335544336. deadlock
page 142458, page type 5 lock conversion denied
было залечено драйвером, но его происхождение мне неизвестно (толи skidder помог, толи ещё где)
при использовании 1.5.5 и 1.6 (from CVS) повторяется, правда без
page type 5 lock conversion denied, а просто плюется deadlock-ом
org.firebirdsql.jdbc.FBSQLException: GDS Exception 335544336. deadlock
page 142458, page type 5 lock conversion denied
было залечено драйвером, но его происхождение мне неизвестно (толи skidder помог, толи ещё где)
при использовании 1.5.5 и 1.6 (from CVS) повторяется, правда без
page type 5 lock conversion denied, а просто плюется deadlock-ом
Re: у нас тоже встречается
Появилась такая же ошибка. Одновременно ~ 80 пользователей при 100 коннектах - нагрузка средне-большая. Используется FB2 RC4. С чем это может быть связано?
Код: Выделить всё
localhost Wed Sep 6 13:51:13 2006
Database: /samba/db/base_test.fdb
page 6226674, page type 5 lock conversion denied (215)
localhost Wed Sep 6 13:51:13 2006
Database: /samba/db/base_test.fdb
deadlock
page 6226674, page type 5 lock conversion denied
internal gds software consistency check (error during savepoint backout (290), file: exe.cpp line: 3710)
localhost Wed Sep 6 14:04:00 2006
Database: /samba/db/base_test.fdb
page 6227366, page type 5 lock conversion denied (215)
localhost Wed Sep 6 14:04:00 2006
Database: /samba/db/base_test.fdb
page 6227369, page type 5 lock conversion denied (215)
localhost Wed Sep 6 14:17:15 2006
Database: /samba/db/base_test.fdb
page 6145378, page type 5 lock conversion denied (215)
Re: у нас тоже встречается
Наблюдение, после возникновения данной ошибки начинает расти разрыв Oldest active -> Next transaction пока не убьешь клиента, который получил отлуп.