On Tue, Apr 14, 2015 at 10:59:51AM +0800, Liu Yuan wrote:
> 
> Hi Alexander,
> 
>    Could you please give this patch a review?
> 

Hey Yuan / Vasiliy,
    Sorry for the slow reply.

> On Mon, Apr 13, 2015 at 01:32:56PM +0300, Vasiliy Tolstov wrote:
> >  [Service]
> > +Environment="SHEEPDOG_ARGS=--cluster local --log dst=syslog -f --upgrade" 
> > "SHEEPDOG_PATH=@LOCALSTATEDIR@/lib/sheepdog"

[snip]

> > -ExecStart=/bin/sh -c 'ulimit -n 32768; @SBINDIR@/sheep --pidfile 
> > @LOCALSTATEDIR@/run/sheep.pid $(if [ -z "$SHEEP_OPTS" ]; then echo 
> > "--cluster local --log dst=syslog --upgrade @LOCALSTATEDIR@/lib/sheepdog"; 
> > else echo $SHEEP_OPTS; fi)'

Removing the shell script from the ExecStart and using Environment is a good 
idea.

Changing SHEEP_OPTS to SHEEPDOG_ARGS and SHEEPDOG_PATH is going to break 
existing installs that use this service file.  What's the functional benefit to 
doing this?  We already have a separate service file for Debian packages (i.e. 
debian/sheepdog.service), that uses another naming scheme.

> > -PIDFile=@LOCALSTATEDIR@/run/sheep.pid
> > -Type=forking
> > +ExecStart=@SBINDIR@/sheep $SHEEPDOG_ARGS $SHEEPDOG_PATH

I don't think this is a good idea.  I went and double-checked the systemd 
documentation:


http://www.freedesktop.org/software/systemd/man/systemd.service.html

If set to simple (the default if neither Type= nor BusName=, but ExecStart= are 
specified), it is expected that the process configured with ExecStart= is the 
main process of the service. In this mode, if the process offers functionality 
to other processes on the system, its communication channels should be 
installed before the daemon is started up (e.g. sockets set up by systemd, via 
socket activation), as systemd will immediately proceed starting follow-up 
units.


... so if I'm understanding this right:

   1) By removing 'Type=forking', it defaults to 'Type=simple'
   2) 'Type=simple' expects to have communication setup before the daemon is 
started (e.g. by systemd managing the sockets via socket activation).

#2 means that (unless we implement socket activation) we're going to have an 
even bigger start-up race condition than we already have, for services that 
depend on sheepdog (e.g. qemu guests that start at bootup) because systemd will 
have no way of knowing when sheep is actually ready for work. 

So overall, I NACK these changes.

Thanks.


Alexander

-- 
sheepdog mailing list
[email protected]
https://lists.wpkg.org/mailman/listinfo/sheepdog

Reply via email to