Bug 2887 - postgresql silently fails to start if pidfile exists
: postgresql silently fails to start if pidfile exists
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/postgresql-server)
: unstable
: all Linux
: P2 blocker
Assigned To:
:
:
:
:
: 3459
  Show dependency tree
 
Reported: 2003-08-27 16:26 by
Modified: 2012-03-16 13:57 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2003-08-27 16:26:03
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?
------- Comment #1 From 2003-08-28 19:52:26 -------
stop() already removes stale pidfile: 
 
$ fgrep -n 'rm -f "$PIDFILE"' /etc/init.d/functions 
354:            [ -z "$PIDFILE" ] || rm -f "$PIDFILE" 
------- Comment #2 From 2003-08-31 10:53:14 -------
what's the problem, then? :(

-- 
mike, confused
------- Comment #3 From 2004-07-07 21:47:07 -------
до сих пор актуально :(

проверено при обновлении с 20040505 на 20040706
------- Comment #4 From 2004-07-23 22:01:59 -------
сделать NMU?  это надо фиксить -- сегодня актуально
------- Comment #5 From 2004-08-04 18:35:10 -------
Константин, а можно осведомиться, почему это осталось в новой сборке?

С ней в итоге при обновлении наблюдается та же проблема.

Это _важно_!

(в изначальном сообщении rm /var/lock/subsys/postgresql, конечно же -- как меня
так переклинило)
------- Comment #6 From 2004-08-04 18:41:50 -------
ха... тут еще и postmaster толком не умирал...
------- Comment #7 From 2004-08-05 07:54:39 -------
я не могу повторить описанную ошибку, все время стартует нормально
------- Comment #8 From 2004-08-05 11:39:00 -------
Эх.  А я ее практически постоянно ловлю...

Давайте так -- я постараюсь отловить и зафиксить у себя (просто ловилось редко
-- при обновлениях -- и фиксилось *максимально* оперативно кувалдой по месту,
потому что на нем живет dict.linux.org.ua, который мягкий продакшн).  Если
выйдет и у Вас фикс не сломает чего еще -- хорошо бы в пакет.

Простите за нервничанье, просто эта же проблема и с sec updates может вылезти --
прикладываем обновление и сервер не подымается.
------- Comment #9 From 2004-08-31 23:16:06 -------
Вот, обновился.

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, а вовсе не инитскрипт. %)
------- Comment #10 From 2004-10-06 06:12:09 -------
а воз и ныне там :(  
после краша не хотел подниматься постгрес из-за pid файла.. 
 
>я не могу повторить описанную ошибку, все время стартует нормально 
есть подозрение, что проявляется это только тогда, когда в системе есть левый 
процесс с pid записанным в этом файле. 
 
$ rpm -q postgresql-server 
postgresql-server-7.4.5-alt1 
 
------- Comment #11 From 2005-02-17 19:54:27 -------
А посмотреть на инитскрипты из debian, например, не Б.М.?

У меня точно такая же проблема при апгрейде постгреса.  Плюс совсем не нравится
то, что происходит в stop :-/
------- Comment #12 From 2005-03-10 13:11:47 -------
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
файл удалится, да и самих вариантов останова несколько поболее.
------- Comment #13 From 2005-03-10 14:29:15 -------
бум фиксить
------- Comment #14 From 2005-03-10 15:07:11 -------
7.4.7-alt2 ушло в incoming -- прошу тестировать
------- Comment #15 From 2005-03-14 17:22:28 -------
для 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 в данном случае лишняя, по моему.
------- Comment #16 From 2005-03-14 17:29:52 -------
(In reply to comment #15)
> для pg_ctl stop следует подрисовать "-mi". иначе останова придётся ждать до тех
> пор, пока добровольно не отвалятся все клиенты.
-mi нельзя, лучше -mf.

Или как wait_socker - -ms с таймаутом, по истечении которого -mf.
------- Comment #17 From 2005-03-14 17:38:20 -------
согласен.  stop с "-mf" и какой-нибудь forcestop с "-mi".
------- Comment #18 From 2005-03-14 18:43:51 -------
restart как должен делаться?
------- Comment #19 From 2005-03-14 19:41:54 -------
stop()
{
<skip>
/bin/su -l postgres -s /bin/sh -c '/usr/bin/pg_ctl stop -D \'$PGDATA\' -mf
<skip>
}

restart()
{
    stop
    start
}
------- Comment #20 From 2005-06-04 20:13:49 -------
fix ушёл в incoming/
------- Comment #21 From 2005-06-05 10:13:23 -------
К 8.0 оно тоже надо?..
------- Comment #22 From 2005-06-05 13:05:13 -------
Да.
------- Comment #23 From 2005-08-30 02:19:41 -------
closing
------- Comment #24 From 2005-08-30 02:27:49 -------
closing
------- Comment #25 From 2006-04-22 11:32:22 -------
Представился случай проверить, что работает:

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 ]

И -- работает. :)
Спасибо!
------- Comment #26 From 2007-07-07 02:38:52 -------
Ты будешь смеяться -- опять вылезло на postgresql8.2-server из Server 4.0,
засунутом в VE... локфайл присутствует, сервер не запускается, link socked тоже
failed.
------- Comment #27 From 2007-07-07 02:56:10 -------
хотя... темплейт получился совсем минимальный, без etcnet => сети.
ладно, завтра продолжу.
------- Comment #28 From 2007-07-07 03:09:59 -------
пускаю руками -- бред какой-то:

# /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
------- Comment #29 From 2007-07-07 15:21:12 -------
Миш, у тебя тут половина параметров какие-то левые... в init-скрипте там куча
парамеров для всех команд разом! :(

А учитывая, что chroot-патч я делал уже из последних сил, то диагностика
обработки параметров вообще почти отсутствует в случае неверных параметров для
chroot. :(
------- Comment #30 From 2007-07-07 16:23:34 -------
(In reply to comment #29)
> Миш, у тебя тут половина параметров какие-то левые... в init-скрипте там куча
> парамеров для всех команд разом! :(
Это было из sh -x /etc/init.d/postgresql restart; попробую на более свежую
голову ещё раз посмотреть.