Am 06.08.2015 um 10:46 schrieb Lennart Poettering:
On Sat, 01.08.15 11:54, Reindl Harald (h.rei...@thelounge.net) wrote:


Am 27.07.2015 um 21:39 schrieb Lennart Poettering:
On Wed, 15.07.15 16:24, Reindl Harald (h.rei...@thelounge.net) wrote:

why does systemd *randomly* try to create "RuntimeDirectory"
for "ExecStartPost" and so terminates a perfectly up and running service
because the "file exists" error?

Fedora 21 as well as Fedora 22
https://bugzilla.redhat.com/show_bug.cgi?id=1226509#c3

Jul 15 16:19:43 rawhide systemd: Stopping Test Unit...
Jul 15 16:19:43 rawhide systemd: Stopped Test Unit.
Jul 15 16:19:43 rawhide systemd: Starting Test Unit...
Jul 15 16:19:43 rawhide systemd: Failed at step RUNTIME_DIRECTORY spawning
/usr/bin/true: File exists
Jul 15 16:19:43 rawhide systemd: test2.service: control process exited,
code=exited status=233
Jul 15 16:19:43 rawhide systemd: Failed to start Test Unit.
Jul 15 16:19:43 rawhide systemd: Unit test2.service entered failed state.
Jul 15 16:19:43 rawhide systemd: test2.service failed.

Can you file an issue about this on github with a reproducer for v221
or v222? Thanks!

the reproducer is in https://bugzilla.redhat.com/show_bug.cgi?id=1226509#c3
just a few lines of a systemd-unit

dunno if this affects v221 and v222 too - Fedora user
but it is very likely since it exists from v216 to v219

why not just dig in the code and remove that completly useless "file exists"
check instead be happy that the folder is already there?

So, you'll get this EEXIST error only if there's already something at
the place of the runtime dir that is either:

NOBODY but systemd creates that directory
it don't exist at all before the service is started

the problem is that SOMETIMES at stop is
seems not to be removed and so the next start
fails

the second problem is that SOMETIMES systemd creates
RuntimeDirectory for ExecStart *and* ExecStartPost
and if that happens ExecStartPost fails and so the
service too which is killed hence while the main
process is already running fine

you *really* should look at https://bugzilla.redhat.com/show_bug.cgi?id=1226509#c3

"systemctl stop test2; systemctl start test2; sleep 1; cat messages" is fine repeatly and *randomly* some systemd-racecondition with the above
problems happens when a service with RuntimeDirectory is stopped and
started often enough *and* that happens regulary on machines where
a cronjob stops a service every hour to backup data and start it
again

a) not a directory

or

b) a directory, but not owned by the user and group set for the
    service

or

c) a directory, but with a more loose access mode than specified in
    RuntimeDirectoryMode=.

systemd is completely fine with the directory pre-existing, as long as
it really is a directory, is owned by the right user and group and has
an access mode that is at least as strict as the configured one.

It would be good if you could verify that file data of the runtime dir
when this fails for you. Thanks.



Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to