Summary: | Некорректное завершение процесса mongodb в init-скрипте | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Dank Bagryantsev <4alt> |
Component: | mongo-server | Assignee: | Vitaly Kuznetsov <vitty> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P3 | CC: | dubrsl, mithraen |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Dank Bagryantsev
2013-02-03 17:13:55 MSK
Небольшая поправка: Файл /var/lib/mongo/mongod.lock должен не удаляться, а обнуляться при корректном завершении mongodb. Похоже, ошибка нестабильная и чаще проявляется на больших базах (у меня на > 10Гб) И, возможно, зависит от интенсивности операций чтения/записи во время останова. Ошибка, скорее всего, действительно связана с init-скриптом mongodb в ALT Linux. На больших и интенсивно используемых базах, корректный останов mongodb происходит в течении 5-15 сек (у меня так, по крайней мере). Но init-скрипт убивает процесс mongodb, не дожидаясь конца останова. Отсюда и проблема. Временный "костыль", позволяющий обойти эту проблему: В файле /etc/init.d/mongod заменить функцию stop() { stop_daemon --lockfile "$LOCKFILE" -- mongod RETVAL=$? return $RETVAL } на что-то типа такого: stop() { /usr/bin/mongod --shutdown $OPTIONS RETVAL=$? rm $LOCKFILE return $RETVAL } И желательно в restart() { stop start } между stop и start вставить какую-то задержку, типа sleep 5 т.к. иногда mongodb не успевает отдать занятый bind Я понимаю, что "костыль" корявый, но по крайней мере - это работает более корректно. Fixed in 2.4.8-alt1 |