| 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 |