Обсуждение: pg_ctl is fragile

Поиск
Список
Период
Сортировка

pg_ctl is fragile

От
Neil Conway
Дата:
After an unclean shutdown (e.g. a kernel crash), pg_ctl isn't smart
enough to realize that it won't be able to successfully shut down the
postmaster:

$ pg_ctl -D /pgsql/data stop
/pgsql/bin/pg_ctl: line 269: kill: (2039) - No such process
waiting for postmaster to shut down................................................................ failed
pg_ctl: postmaster does not shut down

We should probably check the exit code produced by kill(1).

Cheers,

Neil

--
Neil Conway <neilc@samurai.com> || PGP Key ID: DB3C29FC

Re: pg_ctl is fragile

От
Tom Lane
Дата:
Neil Conway <neilc@samurai.com> writes:
> After an unclean shutdown (e.g. a kernel crash), pg_ctl isn't smart
> enough to realize that it won't be able to successfully shut down the
> postmaster:

> $ pg_ctl -D /pgsql/data stop
> /pgsql/bin/pg_ctl: line 269: kill: (2039) - No such process
> waiting for postmaster to shut down................................................................ failed
> pg_ctl: postmaster does not shut down

> We should probably check the exit code produced by kill(1).

Doesn't seem like kill's exit code is going to tell you enough.
If you got, say, "Permission denied" rather than "No such process",
you shouldn't report that the postmaster isn't running.

            regards, tom lane

Re: pg_ctl is fragile

От
Neil Conway
Дата:
Tom Lane <tgl@sss.pgh.pa.us> writes:
> Doesn't seem like kill's exit code is going to tell you enough.
> If you got, say, "Permission denied" rather than "No such process",
> you shouldn't report that the postmaster isn't running.

Ok, fair enough -- so is there any way to improve this behavior?

Cheers,

Neil

--
Neil Conway <neilc@samurai.com> || PGP Key ID: DB3C29FC

Re: pg_ctl is fragile

От
Bruce Momjian
Дата:
Neil Conway wrote:
> Tom Lane <tgl@sss.pgh.pa.us> writes:
> > Doesn't seem like kill's exit code is going to tell you enough.
> > If you got, say, "Permission denied" rather than "No such process",
> > you shouldn't report that the postmaster isn't running.
>
> Ok, fair enough -- so is there any way to improve this behavior?

Seems we could grab some of kill's stderr and grep it for "No such":

    $ kill -0 32323
    bash: kill: (32323) - No such pid

Probably can't hurt.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Re: pg_ctl is fragile

От
Peter Eisentraut
Дата:
Neil Conway writes:

> Tom Lane <tgl@sss.pgh.pa.us> writes:
> > Doesn't seem like kill's exit code is going to tell you enough.
> > If you got, say, "Permission denied" rather than "No such process",
> > you shouldn't report that the postmaster isn't running.
>
> Ok, fair enough -- so is there any way to improve this behavior?

Merge pg_ctl and postmaster executables.

--
Peter Eisentraut   peter_e@gmx.net