Падает Yaffil 887 вместе с базой

Access Violation, некорректное выполнение запросов или вызовов API, ошибки утилит командной строки, в общем все, что вам мешает работать

Модераторы: kdv, dimitr

Ответить
0leg
Сообщения: 12
Зарегистрирован: 11 июл 2007, 09:41

Падает Yaffil 887 вместе с базой

Сообщение 0leg » 30 июл 2007, 15:35

Есть программа, которая постоянно перекачивает данные между двумя ib-базами. Обе базы лежат на одном сервере, где крутится Yaffil build 887. Периодически одна из баз падает, при этом вылетает Yaffil (вылетает ibserver.exe с системным сообщением "Ошибка в программе"). Кто кого валит - непонятно.
Аппаратные сбои не причем - точно такие ситуации повторялись на двух разных машинах. База падала и в CS и SS режиме.
Смоделировать падение принудительно - не получается (((

В yaffil.log в течение дня до падения встречаются только такие сообщения:

XNET/xnet_error: read from map failed errno = 1067
Процесс был неожиданно завершен.

XNET/xnet_error: read from map failed errno = 298
Слишком много попыток занесения события для семафора.

После перезапуска yaffil`а - куча сообщений о неверных индексах, страницах и т.п. Наиболее частое из них:

Page 3818 is an orphan
Системе не удается найти указанный параметр среды.

после того как Yaffil выдает эту кучу сообщений он вырубается....

Еще один момент, возможно не существенный: если упавшую базу открыть через Yaffil (например при помощи IBExpert), то Yaffil сразу вылетает. Если открыть через Firebird 1.0 - всё открывается и просматривается. ПРИЧЁМ, если после этого базу опять открыть на Yaffil`е - всё тоже начинает работать. При этом в базе есть битые странички, которые легко лечатся.

0leg
Сообщения: 12
Зарегистрирован: 11 июл 2007, 09:41

Сообщение 0leg » 01 авг 2007, 08:50

Статистика упавшей БД:

Код: Выделить всё

Database header page information:
        Flags                   0 
        Checksum                12345 
        Generation              22725 
        Page size               4096 
        ODS version             10.0 
        Oldest transaction      1272 
        Oldest active           22717 
        Oldest snapshot         22717 
        Next transaction        22718 
        Bumped transaction      1 
        Sequence number         0 
        Next attachment ID      0 
        Implementation ID       16 
        Shadow count            0 
        Page buffers            0 
        Next header page        0 
        Database dialect        3 
        Creation date           Jul 16, 2007 10:43:56 
        Attributes               
 
    Variable header data: 
        Sweep interval:         20000 
        *END*

Кузнецов Евгений
Сообщения: 144
Зарегистрирован: 16 фев 2006, 22:36

Сообщение Кузнецов Евгений » 02 авг 2007, 00:23

Доброго времени суток!

Ну поскольку никто Вам не ответил, влезу я.
1) Есть 892 сборка Yaffil - если это баг, то он мог быть уже исправлен
2) По статистике видно, что автоматический сборщик пытается собрать мусор и, видимо, на этом обламывается.
Что бы я сделал :
- в монопольном режиме установил бы sweep interval в 0 (на всякий)
- сделал бы backup с ключом -g (без сборки мусора) и ведением лога (кажется, -v -y <файл>)
- restore в копию базы с созданием лога
В случае ошибок в логах, если бы не смог сам разобраться, выложил бы сюда, авось, кто-нибудь да помог бы.

3) В случае неудачи можно попробовать пересоздание базы из скрипта заново с переливкой данных

0leg
Сообщения: 12
Зарегистрирован: 11 июл 2007, 09:41

Сообщение 0leg » 02 авг 2007, 17:12

[quote="Кузнецов Евгений"][/quote]

База действительно падает во время автоматической сборки мусора. Удалось добится 100-процентной повторяемости падёжа (или паданья :) ).
Беру нормальную базу, делаю своей прогой кучу транзакций, довожу разницу OAT-OIT до значения более 20 000 и отключаюсь......

... при новом коннекте падает сервер и сама база :cry:

Проверял на двух билдах Yaffil`а: 887 (CS и SS) и 892 (только SS), операционка - Win XP SP2. Sweep Interval=20 000. Размер базы ~ 15 Мб. Результат везде одинаковый.

Брал одну и ту же базу с разными данными (за разные числа) - с некоторыми базами сборка мусора проходит нормально и уронить их не удаётся вообще. Другие - падают во время первого же Sweep`а.

Все проблемы решаются, когда ставлю Sweep Interval = 0.

Спасибо Евгений.

Кузнецов Евгений
Сообщения: 144
Зарегистрирован: 16 фев 2006, 22:36

Сообщение Кузнецов Евгений » 02 авг 2007, 22:36

Доброго времени суток!
0leg писал(а):операционка - Win XP SP2
Думаю, FAQ Вы читали, но на всякий случай - http://www.ibase.ru/ibfaq.htm#xp - были сообщения даже о повреждении БД по этой причине.
0leg писал(а): Беру нормальную базу, делаю своей прогой кучу транзакций, довожу разницу OAT-OIT до значения более 20 000 и отключаюсь......
А вот на свежесозданной БД это воспроизводится? Просто с учетом того, что
0leg писал(а): Брал одну и ту же базу с разными данными (за разные числа) - с некоторыми базами сборка мусора проходит нормально и уронить их не удаётся вообще. Другие - падают во время первого же Sweep`а.
я бы грешил на физическое/логическое повреждение БД, из-за которого и падает сборщик мусора (это, естественно, только предположение).
0leg писал(а): Все проблемы решаются, когда ставлю Sweep Interval = 0.
А при ручной сборке мусора через gfix -sweep проблем не возникает и БД не повреждается?

0leg
Сообщения: 12
Зарегистрирован: 11 июл 2007, 09:41

Сообщение 0leg » 03 авг 2007, 10:02

Думаю, FAQ Вы читали, но на всякий случай - http://www.ibase.ru/ibfaq.htm#xp - были сообщения даже о повреждении БД по этой причине.
читал, восстановление у меня отключено
А при ручной сборке мусора через gfix -sweep проблем не возникает и БД не повреждается?
абсолютно то же самое - падает база и сервер

---
на вновь созданной базе ситуацию пока не моделировал, потом попробую...

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 03 авг 2007, 10:08

Олег, не вижу упоминания в ветке, что у тебя с бэкап-рестором происходит-то.
Всё нормально, без ошибок?

0leg
Сообщения: 12
Зарегистрирован: 11 июл 2007, 09:41

Сообщение 0leg » 03 авг 2007, 10:34

WildSery писал(а):Олег, не вижу упоминания в ветке, что у тебя с бэкап-рестором происходит-то.
Всё нормально, без ошибок?
backup/restore базы до падения - без ошибок, только в конце Restore 2 предупреждения:

Код: Выделить всё

gbak: WARNING:function ABS is not defined 
gbak: WARNING:    module name or entrypoint could not be found 
(всё делаю в IBExpert)

сделать backup базы после падения сервера не удается - при попытке backup падает сервер (тот, который уже перезапущен :) ). Если при backup отключить сборку мусора - не помогает, ситуация та же.
Последний раз редактировалось 0leg 03 авг 2007, 10:52, всего редактировалось 1 раз.

0leg
Сообщения: 12
Зарегистрирован: 11 июл 2007, 09:41

Сообщение 0leg » 03 авг 2007, 10:50

Небольшое уточнение - я везде пишу, что вместе с сервером падает база, но это возможно не так. Обнаружить ошибки в базе после падения вервера удается не всегда.

На некоторых базах переживших падение сервера проверка показывает битые страницы, например:

Код: Выделить всё

Summary of validation errors 
  Number of record level errors : 2 
 Number of index page errors : 2 
 Number of database page errors : 1997 
на некоторых - error not found.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 03 авг 2007, 13:37

Вообще-то дятлопапа сюда раз или два заглядывал за всю историю, но проще его изловить на gmane (линк есть здеь на сайте). Или обратиться непосредственно. Если это ещё не является для него гирей на йацах. Он человек настроения, может и заинтересуется даже в этом случае.

0leg
Сообщения: 12
Зарегистрирован: 11 июл 2007, 09:41

Сообщение 0leg » 03 авг 2007, 14:52

Вообще-то дятлопапа сюда раз или два заглядывал за всю историю, но проще его изловить на gmane (линк есть здеь на сайте). Или обратиться непосредственно. Если это ещё не является для него гирей на йацах. Он человек настроения, может и заинтересуется даже в этом случае.
:) :)
+1

Ответить