DevHeads.net

systemd

Hi List,

I am trying to understand what After= means in a unit file. Does it mean after the specified target is up and operational or
only that the target has been started?

I have something that needs postgres but postgres needs to be operational not just started. Sometimes it can take a bit
for postgres to become operational.

Thanks,
Steve

Comments

Re: systemd

By Jonathan Billings at 01/09/2019 - 11:36

On Wed, Jan 09, 2019 at 10:43:38AM -0500, Steve Clark wrote:
I believe that the postgresql service has Type=notify in it's service
definition, which means that it will notify systemd when it is
operational. This means that if you have a service that has
After=postgresql.service, systemd should wait until after the
postgresql service notifies systemd that it is operational before your
service will be started.

If your service is starting and unable to connect to postgresql, then
I would say that's a bug in postgresql -- it shouldn't be notifying
systemd that it is operational until it actually is.

Re: systemd

By Steve Clark at 01/09/2019 - 12:04

On 01/09/2019 11:36 AM, Jonathan Billings wrote:
from /usr/lib/systemd/system/postgresql.service
...
[Service]
Type=forking

User=postgres
Group=postgres
...

Regards,
Steve

Re: systemd

By Johnny Hughes v... at 01/09/2019 - 12:00

This is, in fact, one of the points why I'm very unhappy with systemd and
the way it is implemented here and most likely in most distributions.

Maybe things _could_ be done the right way with systemd, but it doesn't
happen because it quickly starts to be very complex and it's a lot of work
to do it for a complete distribution. It just doesn't happen - or at least
did not happen in all the years since its introduction.

In this example, PG gets just started with "pg_ctl start" and that's it.

Regards,
Simon