|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
Добрый день Почему Firebird всех версий падает и разрывает все соединения если повреждена строка в какой нить таблице или страница с индексом а он всего лишь выполнял select в readonly транзакции? В архитектуре Classic это еще не так болезненно, но вот при использовании SuperServer кучу пользователей выкидывает из программы, хотя они к этой таблице и этой записи и не обращались. Можно же перехватить исключение и вернуть ошибку вместо набора данных? С какой целью выбрано такое жесткое, снижающее общую доступность системы поведение? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 07:23 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
Вадим МещеряковДобрый день Почему Firebird всех версий падает ... Кстати да, почему? Хороший вопрос. Сегодня утром, в комнате счастья, просматривал статью авторвключая подтвержденные результаты работы под промышленной нагрузкой Подумалось - у меня оно (3.0.4) проработало 28 дней. Под нагрузкой. А потом навернулось при простое :) --- Кстати, на этом сайте увидел еще одну статью - Непрерывное тестирование ... Надо будет почитать. Хотя нахер ... лучше тесты добить. --- Потому что работать на упреждение проблем - это ПРОСТО КАПЕЦ КАК ДОРОГО. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 09:24 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
Вадим Мещеряков, кхм... Вопрос конечно хороший. Но скорее всего правильно делает, ибо если БД побилась в одном месте то может и продолжить своё разрушение. Лучше уж сразу об этом заорать, мол чини базу пока не поздно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 09:41 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
Коваленко ДмитрийСегодня утром, в комнате счастья, просматривал статью провокаторская джинса от postgrespro. Вадим МещеряковПочему Firebird всех версий падает и разрывает все соединения если повреждена строка в какой нить таблице или страница с индексом если индекс поврежден - ничего не падает. Также не падает и на internal gds consistency check, просто прекращает работать с базой, во избежание повреждений при неправильной ЗАПИСИ. Падает только тогда, когда структуры повреждены так, что невозможно определить, что они повреждены. А повреждение в результате портит память, и т.д. Вопрос вообще странный. Почему программы на Дельфи (и вообще) падают по AV? Потому же. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 09:52 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
kdvКоваленко ДмитрийСегодня утром, в комнате счастья, просматривал статью провокаторская джинса от postgrespro. Я понимаю, что падает все. Но проблемы FB все равно подбешивают. А сюда написал, потому что вчера тоже про эту херню думал. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 10:06 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
Коваленко Дмитрийесли индекс поврежден - ничего не падает. Также не падает и на internal gds consistency check, просто прекращает работать с базой, во избежание повреждений при неправильной ЗАПИСИ. Значит мой вопрос не корректный а правильный будет такой: "Почему Firebird прекращает работать с базой если находит ошибку в записи или в индексе при select в readonly транзакции?" Вопрос насколько это правильно отключить всех от базы по условию if (!thisPointer) появился после вот такого комментария к http://tracker.firebirdsql.org/browse/CORE-6137 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 10:07 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
Вадим МещеряковПочему Firebird всех версий падает и разрывает все соединения если повреждена строка в какой нить таблице или страница с индексом а он всего лишь выполнял select в readonly транзакции?Пример падения ? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 10:12 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
Вадим Мещеряков, ах ты про опубликованный тобой баг. Ну так это же сделано не намеренно. Видишь ли если дело дошло то багчека, то поздно пить боржоми. Это условие которое не должно достигаться никогда, если в коде нет ошибки. И оно является лишь следствием, где-то пропущена какая-то проверка или обработка которая должна была предотвратить эту ситуацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 10:12 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
hvladПример падения ? Никто не присылал баз в которых запись повреждена или индексная страница? Когда SuperServer обращается к такой записи - рвет все соединения Я на днях ремонтировал с помощью gfix -mend базу в книжном магазине заказчика. Магазин не мог работать пока не починили. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 10:52 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
05.09.2019 10:52, Вадим Мещеряков пишет: > Я на днях ремонтировал с помощью gfix -mend базу в книжном магазине заказчика. > Магазин не мог работать пока не починили. а с поломатым кассовым аппаратом магазин работать может? а если трубу прорвало, или электричество кончилось? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 11:02 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
Вадим МещеряковКогда SuperServer обращается к такой записи - рвет все соединенияГде ПАДЕНИЕ, блин ? Когда научимся называть вещи своими именами ? Что лучше : - работать с возможно повреждённой памятью и плевать что из-за этого будет записано в БД - тщательно проверять каждую страницу при любом к ней обращении (только при чтении с диска - не достаточно, память могла повредить злобная UDF, или случайный космический нейтрон) - и тормозить при этом до невозможности - честно сказать: я вижу то, чего быть не может никогда, х\з что там ещё, давай-ка лучше всё остановим и ты меня перезапустишь (возможно после проверок) PS изначальная архитектура IB\FB - классик, там такой подход вполне оправдан. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 11:18 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
Вадим МещеряковЯ на днях ремонтировал с помощью gfix -mend базуЭто не ремонт. Это убийство. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 11:18 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
hvladЭто не ремонт. Это убийство. После gfix -mend можно до конца рабочего дня дотянуть а там уже и перебэкапить После перебэкапа в базе два варианта. 1. дубликаты записей (удаляю) 2. нет записи(ей) (беру из копии базы или из локальной копии документа) Какие еще есть возможности быстро восстановить работоспособность? На самом деле, это не часто приходится делать, как правило на небольших объектах, но всегда внезапно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 11:34 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
hvlad - честно сказать: я вижу то, чего быть не может никогда, х\з что там ещё, давай-ка лучше всё остановим и ты меня перезапустишь (возможно после проверок) PS изначальная архитектура IB\FB - классик, там такой подход вполне оправдан. Понял, все логично. Я совсем и не думал про страницы в памяти ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 11:36 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
Вадим МещеряковКоваленко Дмитрийесли индекс поврежден - ничего не падает. Также не падает и на internal gds consistency check, просто прекращает работать с базой, во избежание повреждений при неправильной ЗАПИСИ. Значит мой вопрос не корректный а правильный будет такой: "Почему Firebird прекращает работать с базой если находит ошибку в записи или в индексе при select в readonly транзакции?" Вопрос насколько это правильно отключить всех от базы по условию if (!thisPointer) появился после вот такого комментария к http://tracker.firebirdsql.org/browse/CORE-6137 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Очень плохой стиль кода, когда вызывают метод несконструированного объекта... Проверка должна была быть ранее. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 16:30 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
Siemargl, товарищ ты хоть понимаешь для чего сей код был сделан? Этот код из разряда ну мы всё проверили, но вдруг случился п.... и вот тогда кидаем багчек и прекращаем работу. Т.е. багчек он потому так и называется, что если уж туда попало, то возможно это баг в сервере. Это как раз кусок кода для отлова багов. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 16:56 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
Этот фрагмент не имеет никакого отношения к реальному багу. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:06 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
Симонов ДенисSiemargl, товарищ ты хоть понимаешь для чего сей код был сделан? Этот код из разряда ну мы всё проверили, но вдруг случился п.... и вот тогда кидаем багчек и прекращаем работу. Т.е. багчек он потому так и называется, что если уж туда попало, то возможно это баг в сервере. Это как раз кусок кода для отлова багов. По стандарту С++ вызов метода по нулевому указателю это UB ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:06 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
hvladЭтот фрагмент не имеет никакого отношения к реальному багу.Возможно, что BUGCHECK(167) вызвался в другом месте, но в любом случае этот код не имеет права на существование. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:08 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
SiemarglhvladЭтот фрагмент не имеет никакого отношения к реальному багу.Возможно, что BUGCHECK(167) вызвался в другом местеЭтот багчек является псевдо-случайным следствием совершенно другого бага. И он, кстати, выполнил свою работу - не дал разломать БД окончательно. Siemarglно в любом случае этот код не имеет права на существование.Не делай так. Будь молодцом и примером для всех юных пионеров. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:16 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
hvladSiemarglпропущено... Возможно, что BUGCHECK(167) вызвался в другом местеЭтот багчек является псевдо-случайным следствием совершенно другого бага. И он, кстати, выполнил свою работу - не дал разломать БД окончательно. Siemarglно в любом случае этот код не имеет права на существование.Не делай так. Будь молодцом и примером для всех юных пионеров. Лучше поздно assert, чем никогда.... Для юных пионеров я пока написал пару статей о надежном программировании. Линтером то пользуетесь? Он должен был спалить такое. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 22:45 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
SiemarglЛинтером то пользуетесь???? SiemarglОн должен был спалить такое.Какое - такое ? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 23:10 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
hvladSiemarglЛинтером то пользуетесь???? https://en.wikipedia.org/wiki/Lint_(software) hvladSiemarglОн должен был спалить такое.Какое - такое ? :) UB ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 00:06 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
Siemargl, Линтер (на данном сайте) - это скорее что-то про СУБД :) Нет, не пользуюсь. Ни тем, ни этим :) Что палить-то ? Ты к чему прицепился ? И зачем ? :) Каким боком проверка this на NULL вдруг стала страшным преступлением ? Если её туда всунули, значит когда-то был краш в этом месте. Да, подстелили соломку на будущее - святой стандарт против ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 00:24 |
|
Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?
|
|||
---|---|---|---|
#18+
В данному случае UB такое: для this == nullptr - реакция линтера "условие всегда ложно" А то тут малограмотных полфорума, банят то, что не понимают. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 00:29 |
|
|
start [/forum/topic.php?fid=40&fpage=20&tid=1560587]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
70ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 430ms |
total: | 587ms |
0 / 0 |