Subject: Re: bug#23064: herd has incomplete status reporting, not so helpful

From: [email-masked] (Ludovic Courtès)
Date: Sat, 19 Mar 2016 22:15:01 +0100

Danny Milosavljevic <[email-masked]> skribis:

> $ sudo herd status postgres
> Status of postgres:
>   It is started.
>   Running value is 18438.
>   It is enabled.
>   Provides (postgres).
>   Requires (user-processes loopback).
>   Conflicts with ().
>   Will be respawned.
>
> So it claimed that everything was just peachy.
>
> $ sudo herd stop postgres
> $ sudo herd start postgres
>
> ... which reported nothing out of the ordinary either.
>
> $ ps -ef |grep postgres
> [xxxx] <defunct>

Sounds like postgresql died and shepherd did not notice?  Or maybe it
keeps trying to respawn it?  What did /var/log/shepherd.log say?

> $ sudo -u postgres postgres --config-file=/etc/postgresql.conf -D /var/lib/postgresql/data
> FATAL:  database files are incompatible with server
> DETAIL:  The data directory was initialized by PostgreSQL version 9.3, which is not compatible with this version 9.5.1.
> $ 
>
> Aha! It says so right there in the standard output (or error?). Where did that message go in the shepherd case?
>
> $ cd /var/log
> $ grep -r incompatible .
> $ 

Currently the Shepherd does not do log stdout/stderr of its child
processes, which sucks somewhat.

However, daemons can usually be told to write to syslog, which is more
appropriate than writing things to stdout/stderr anyway.  What’s the
right command-line/configuration option to have postgresql use syslog?

Thanks,
Ludo’.