trickster:~> sudo service postgresql restart Service postmaster is not running. [PASSED] Adjusting environment for postgresql: [ DONE ] Starting postmaster service: [ DONE ] Link postgresql socket: [FAILED] [...strace session => problem indication skipped...] [root@trickster root]# rm /etc/init.d/postgresql [root@trickster root]# service postgresql restart Service postmaster is not running. [PASSED] Adjusting environment for postgresql: [ DONE ] Starting postmaster service: [ DONE ] Link postgresql socket: [ DONE ] [root@trickster root]# pidof postmaster 19357 19355 19342 ==> we'd better remove pidfile somewhere in stop() ? ldv: should service scripts check for that?
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
Представился случай проверить, что работает: 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; попробую на более свежую голову ещё раз посмотреть.