Summary: | postgresql silently fails to start if pidfile exists | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Michael Shigorin <mike> |
Component: | postgresql-server | Assignee: | Denis Smirnov <mithraen> |
Status: | CLOSED FIXED | QA Contact: | |
Severity: | blocker | ||
Priority: | P2 | CC: | ldv, mithraen, ns, rider |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux | ||
Bug Depends on: | |||
Bug Blocks: | 3459 |
Description
Michael Shigorin
2003-08-27 16:26:03 MSD
stop() already removes stale pidfile: $ fgrep -n 'rm -f "$PIDFILE"' /etc/init.d/functions 354: [ -z "$PIDFILE" ] || rm -f "$PIDFILE" what's the problem, then? :( -- mike, confused до сих пор актуально :( проверено при обновлении с 20040505 на 20040706 сделать NMU? это надо фиксить -- сегодня актуально Константин, а можно осведомиться, почему это осталось в новой сборке? С ней в итоге при обновлении наблюдается та же проблема. Это _важно_! (в изначальном сообщении rm /var/lock/subsys/postgresql, конечно же -- как меня так переклинило) ха... тут еще и postmaster толком не умирал... я не могу повторить описанную ошибку, все время стартует нормально Эх. А я ее практически постоянно ловлю... Давайте так -- я постараюсь отловить и зафиксить у себя (просто ловилось редко -- при обновлениях -- и фиксилось *максимально* оперативно кувалдой по месту, потому что на нем живет dict.linux.org.ua, который мягкий продакшн). Если выйдет и у Вас фикс не сломает чего еще -- хорошо бы в пакет. Простите за нервничанье, просто эта же проблема и с sec updates может вылезти -- прикладываем обновление и сервер не подымается. Вот, обновился. root@fly ~ # cat /var/lib/pgsql-root/var/lib/pgsql/data/postmaster.pid 12833 /var/lib/pgsql/data 5432001 9142276 root@fly ~ # ps auxww | grep 12833 postgres 12833 0.0 0.1 16204 740 ? S Aug26 0:02 /usr/bin/postmaster -D /var/lib/pgsql/data -S -r /var/lib/pgsql-root root 28306 0.0 0.1 1592 552 pts/14 S 22:12 0:00 grep 12833 root@fly ~ # file /var/lock/subsys/postgresql /var/lock/subsys/postgresql: empty root@fly ~ # service postgresql restart Service postmaster is not running. [PASSED] Adjusting environment for postgresql: [ DONE ] Starting postmaster service: [ DONE ] Link postgresql socket: [FAILED] root@fly ~ # rm /var/lib/pgsql-root/var/lib/pgsql/data/postmaster.pid root@fly ~ # service postgresql restart Service postmaster is not running. [PASSED] Adjusting environment for postgresql: [ DONE ] Starting postmaster service: [ DONE ] Link postgresql socket: [ DONE ] NB: в изначальном багрепорте что-то не то я из xterm'ов слепил -- прибивать надо /var/lib/pgsql-root/var/lib/pgsql/data/postmaster.pid, а вовсе не инитскрипт. %) а воз и ныне там :(
после краша не хотел подниматься постгрес из-за pid файла..
>я не могу повторить описанную ошибку, все время стартует нормально
есть подозрение, что проявляется это только тогда, когда в системе есть левый
процесс с pid записанным в этом файле.
$ rpm -q postgresql-server
postgresql-server-7.4.5-alt1
А посмотреть на инитскрипты из debian, например, не Б.М.? У меня точно такая же проблема при апгрейде постгреса. Плюс совсем не нравится то, что происходит в stop :-/ Date: Sat, 5 Mar 2005 15:30:50 +0300 From: Alex Gorbachenko <agent_007 immo.ru> To: community altlinux.ru Subject: Re: [Comm] Re: Postgresql а всё потому, что правильный stop делается через pg_ctl. тогда и pid файл удалится, да и самих вариантов останова несколько поболее. бум фиксить 7.4.7-alt2 ушло в incoming -- прошу тестировать для pg_ctl stop следует подрисовать "-mi". иначе останова придётся ждать до тех пор, пока добровольно не отвалятся все клиенты. у меня, например, такого не бывает никогда, как следствие restat|stop не выполнится. ---/bin/su -s /bin/bash -c "/usr/bin/pg_ctl -D \"$PGDATA\" stop" postgres +++/bin/su -l postgres -s /bin/sh -c '/usr/bin/pg_ctl stop -D \'$PGDATA\' -mi' зависимость на /bin/bash в данном случае лишняя, по моему. (In reply to comment #15) > для pg_ctl stop следует подрисовать "-mi". иначе останова придётся ждать до тех > пор, пока добровольно не отвалятся все клиенты. -mi нельзя, лучше -mf. Или как wait_socker - -ms с таймаутом, по истечении которого -mf. согласен. stop с "-mf" и какой-нибудь forcestop с "-mi". restart как должен делаться? stop() { <skip> /bin/su -l postgres -s /bin/sh -c '/usr/bin/pg_ctl stop -D \'$PGDATA\' -mf <skip> } restart() { stop start } fix ушёл в incoming/ К 8.0 оно тоже надо?.. Да. closing closing Представился случай проверить, что работает: Committing changes... Preparing packages for installation... libpq3-7.4.12-alt0.M24.1 postgresql-7.4.12-alt0.M24.1 postgresql-server-7.4.12-alt0.M24.1 Stopping postgresql service: [ DONE ] rm: cannot remove `/var/lib/pgsql-root/var/lib/pgsql/data/postmaster.pid': No such file or directory Adjusting environment for postgresql: [ DONE ] Starting postmaster service: [ DONE ] Link postgresql socket: [ DONE ] И -- работает. :) Спасибо! Ты будешь смеяться -- опять вылезло на postgresql8.2-server из Server 4.0, засунутом в VE... локфайл присутствует, сервер не запускается, link socked тоже failed. хотя... темплейт получился совсем минимальный, без etcnet => сети. ладно, завтра продолжу. пускаю руками -- бред какой-то: # /usr/bin/postgres --pidfile /var/lib/pgsql/data/postmaster.pid --background --make-pidfile -- -D /var/lib/pgsql/data -C /var/lib/pgsql-root FATAL: --pidfile requires a value Миш, у тебя тут половина параметров какие-то левые... в init-скрипте там куча парамеров для всех команд разом! :( А учитывая, что chroot-патч я делал уже из последних сил, то диагностика обработки параметров вообще почти отсутствует в случае неверных параметров для chroot. :( (In reply to comment #29) > Миш, у тебя тут половина параметров какие-то левые... в init-скрипте там куча > парамеров для всех команд разом! :( Это было из sh -x /etc/init.d/postgresql restart; попробую на более свежую голову ещё раз посмотреть. |