Thread: pg_ctl is fragile

pg_ctl is fragile

From
Neil Conway
Date:
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

From
Tom Lane
Date:
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

From
Neil Conway
Date:
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

From
Bruce Momjian
Date:
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

From
Peter Eisentraut
Date:
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