Am 11.01.2018 um 16:52 schrieb Uoti Urpala:
On Thu, 2018-01-11 at 15:34 +0100, Reindl Harald wrote:
Am 11.01.2018 um 15:25 schrieb Uoti Urpala:
I'd guess this is due to systemctl starting each listed unit
independently rather than as a single transaction. Thus, the second
version first starts second.service without first.service being active
at all. Since there's only an After relationship, not Wants/Requires,
second.service will immediately start. Then systemctl starts
first.service; since second.service is already running, there's nothing
the After relationship could affect

but why?

the one "After=" should be enough to have a clear ordering of stop/start
both as it happens in shutdown/boot

At boot, both would be started as part of the same transaction (same
would happen here if you started a third.service that depended on both
first.service and second.service, then second.service would always
wait). Here second.service is just started individually, and systemd
has no idea at that time that first.service is going to be running at
all

that's a design error and don't follow the least surprise principle and until today i did not even consider that to be possible at all

Given that, it really can't behave any differently (it can't delay
the start of second.service to wait for first.service, when as far as
it knows first.service may well never get started at all!). It's only
after second.service is already running that it sees that first.service
will be started, and at that point it's too late to make second.service
wait. There really is nothing the init portion could do differently
given the semantics of bare "After" (the behavior could be changed in
the systemctl binary)
surely - systemctl could tell PID1 the whole list at once instead blindly fire up individual restart commands or *at least* it could make a ordering between the listed units from the restart command

it complete unexpected nonsense when i have two services which have a clear start ordering and may depend one from the other because you are even not able to do the right thing in your systemcl command because stop and start need the reverse ordner and so "restat a b c" is always wrong in one of both cases
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to