Summary: | ошибка блокировки файлов | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Timur Batyrshin <erthad> |
Component: | squidmill | Assignee: | manowar <manowar> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P3 | CC: | admin, cas, manowar, mark35, sproutella, webdigi |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Timur Batyrshin
2009-12-23 17:38:10 MSK
Я исправил эксклюзивную транзакцию на разделяемую. Надеюсь, что это поможет. Исправление лежит тут: git://git.altlinux.org/people/manowar/packages/squidmill.git В Сизиф пока не собирается, а без него нельзя обновить и в ветках. Нет, такая же ситуация. По-моему, дело не в этом: Ключ -R (округление) в инитскрипте не используется, а приведенный патч меняет поведение только функции round-log. bulk-insert же отрабатывает без отдельной транзакции, а он и становится проблемой. В доказательство этого можно запустить squidmill в follow mode без ключа -B 1. В этом случае запись на диск (и выполнение bulk-insert) производится гораздо реже, и у меня воспроизвести ошибку описанным образом сходу не получилось. (В ответ на комментарий №2) > В доказательство этого можно запустить squidmill в follow mode без ключа -B 1. > В этом случае запись на диск (и выполнение bulk-insert) производится гораздо > реже, и у меня воспроизвести ошибку описанным образом сходу не получилось. Ну точнее, воспроизводится все-таки, но вероятность этого падения становится гораздо меньше, т.к. пишет на диск реже. Слушай, а можешь запустить сборщик в foreground и посмотреть, есть ли сообщение об ошибке, когда возникает .db-journal? squidmill-2.0-alt5 -> sisyphus: * Wed Dec 23 2009 Paul Wolneykien <manowar@altlinux> 2.0-alt5 - Use immediate transactions (closes: 22606) Положите squidmill-2.0-alt5 в p5/5.1, пожалуйста. Я собрал для 5.1. Попросите cas@ скопировать в p5 -- у меня прав на это нет. # uname -a В 6 платформе ошшибка вернулась Linux rasib-srv.rasib 2.6.32-el-smp-alt27 #1 SMP Tue Sep 20 19:38:45 UTC 2011 x86_64 GNU/Linux # squidmill -d /var/log/squid/squidmill.db -r -i *** ERROR IN ##execute-program -- This object was raised: (sqlite3-err 5 "database is locked") # rpm -q squidmill libsqlite3 squidmill-2.1-alt0.M60P.1 libsqlite3-3.7.6.2-alt2 После перезапуска работает, но валится с завидной периодичностью. Да, я в курсе, что проблема есть. Единственный способ её побороть, как мне кажется, — это самостоятельно организовать доступ к БД через единственный поток. Сейчас между делом занимаюсь .тем, что добавляю поддержку доменных сокетов в Gambit. После этого можно будет через такой сокет обслуживать несколько клиентов, и ошибок блокировки не будет. Тестируем осторожно http://git.altlinux.org/tasks/66371/ . Пока без доменных сокетов, но зато с небольшим исправлением в gambit-sqlite3 и самом squidmill. Пакет gambit-sqlite3 тоже нужно обновить. Из Сизифа. Также можно попробовать новый alterator-squidmill и новые переводы интерфейса к нему (alterator-l10n). *** Bug 26192 has been marked as a duplicate of this bug. *** (В ответ на комментарий №10) > Тестируем осторожно http://git.altlinux.org/tasks/66371/ . Пока без доменных > сокетов, но зато с небольшим исправлением в gambit-sqlite3 и самом squidmill. Обновил из сизифа, теперь часто в альтераторе стало вылетать: "key=wrong-type-arg, args=(#f "Wrong type (expecting ~A): ~S" ("pair" ()) (()))" При # squidmill -d /var/log/squid/squidmill.db -r -i бывает задумывается на долго, но в итоге показывает статистику. (В ответ на комментарий №14) > (В ответ на комментарий №10) > > Тестируем осторожно http://git.altlinux.org/tasks/66371/ . Пока без доменных > > сокетов, но зато с небольшим исправлением в gambit-sqlite3 и самом squidmill. > > Обновил из сизифа, теперь часто в альтераторе стало вылетать: > "key=wrong-type-arg, args=(#f "Wrong type (expecting ~A): ~S" ("pair" ()) > (()))" Совсем забыл, что в Альтераторе у нас нельзя писать сообщение об ошибке, если часть данных уже ушла… Исправлено в alterator-squidmill.git=v2.0-alt5. Теперь, в случае ошибки squidmill, должно появляться нормально сообщение с кодом ошибки, а в /var/log/alteratord.log должно быть записана её причина. > При # squidmill -d /var/log/squid/squidmill.db -r -i бывает задумывается на > долго, но в итоге показывает статистику. Вот на это «задумывается, но показывает» я и понадеялся. Через Альтератор вызывается та же самая функция. Посмотрите, на всякий случай. И версии gambit-sqlite и squidmill, какие у вас установлены, напишите, пожалуйста. (В ответ на комментарий №16) > И версии gambit-sqlite и squidmill, какие у вас установлены, напишите, > пожалуйста. gambit-4.6.3-alt1 gambit-sqlite3-1.2-alt1 squidmill-2.2-alt1 (В ответ на комментарий №17)
> (В ответ на комментарий №16)
> > И версии gambit-sqlite и squidmill, какие у вас установлены, напишите,
> > пожалуйста.
>
> gambit-4.6.3-alt1
> gambit-sqlite3-1.2-alt1
> squidmill-2.2-alt1
Ага. С новым alterator-squidmill, в случае неудачной выборки из БД, вместо непереводимой игры слов, должно появляться сообщение «Squidmill error (<код>)». У вас так (и какой код)?
В p6 надо бэкпортировать в нынешнем виде? Пока деваться некуда: до реализации unit-сокетов для Gambit я ещё не добрался. Но сизифная версия не должна быть хуже p6, может быть даже она чем-то лучше: я добавил переоткрытие БД в случае ошибки. (В ответ на комментарий №20) > Пока деваться некуда: до реализации unit-сокетов для Gambit я ещё не добрался. > Но сизифная версия не должна быть хуже p6, может быть даже она чем-то лучше: я > добавил переоткрытие БД в случае ошибки. Хорошо, бэкпортирую пока что есть, ждём полной реализации. Ребят, может перенесете в основной репозиторий исправленные пакеты? А то ведь приходится вручную из сизифа подтаскивать. А что, сизифная версия работает стабильно? Ну она хотя бы работает. На одном сервере аптайм уже 67 дней. Версия лежащая в репозитории через каждые 5 минут умирает. Мне только одна проблема мешает - левые IP в статистике, а остальное - работает. Хорошо, сейчас отправлю в p6. А с "левыми" адресами нужно разобраться: вы утверждаете, что в /var/log/squid/access.log таких адресов нет, а в squidmill они есть? Позвольте, но версии "v2.2-alt0.M60P.2" и "v2.2-alt3" отличаются только адаптацией к systemd, а она не нужна в p6. Ну плюс ещё сизифная версия собрана более новым gambit, но это вряд ли принципиально. Расскажите, пожалуйста, что и как вы перенесли из Сизифа на ту машинку, которая уже 67 дней работает. (В ответ на комментарий №26) > Позвольте, но версии "v2.2-alt0.M60P.2" и "v2.2-alt3" отличаются только > адаптацией к systemd, а она не нужна в p6. Ну плюс ещё сизифная версия собрана > более новым gambit, но это вряд ли принципиально. Расскажите, пожалуйста, что и > как вы перенесли из Сизифа на ту машинку, которая уже 67 дней работает. Сервер, раздающий интернет. Проблема: постоянно падает squidmill, не работает статистика. Решение: В репозитории прописываю sisyphus, устанавливаю оттуда squidmill alterator-squidmill gambit-4.6.3-alt1 gambit-sqlite3-1.2-alt1 Все начинает работать отлично. (В ответ на комментарий №25)
> Хорошо, сейчас отправлю в p6.
>
> А с "левыми" адресами нужно разобраться: вы утверждаете, что в
> /var/log/squid/access.log таких адресов нет, а в squidmill они есть?
Верное замечание, сейчас детально смотрю логи - там есть упоминания об этих адресах. Теперь надо понять как они там оказались.
Ну так как на счет обновления библиотек в репозитариях? (В ответ на комментарий №29) > Ну так как на счет обновления библиотек в репозитариях? Тестирую. Так как gambit собирается бустрапом, с каждой предыдущей версии, собрать быстро не получится. squidmill 2.4 (В ответ на комментарий №29) > Ну так как на счет обновления библиотек в репозитариях? Пакет отправлен в p6 и p7. Во время тестирования выяснилось, что в случае запуска и сразу же остановки службы squidmill: # service squidmill status squidmill is dead, but subsystem is locked нужно удалить файл с базой данных: rm -f /var/log/squid/squidmill.db (при этом старые данные статистики будут утеряны!). Обычно это не критично. |