Bug#736258: systemd invoke-rc.d stop unsafe if socket is activated

Henrique de Moraes Holschuh hmh at debian.org
Sun Jul 27 02:45:26 BST 2014


On Sun, 27 Jul 2014, Michael Biebl wrote:
> Am 26.07.2014 23:59, schrieb Henrique de Moraes Holschuh:
> > On Sat, 26 Jul 2014, Michael Biebl wrote:
> >> If invoke-rc.d by default stops both .socket and .service, the package
> >> maintainer no longer has this option.
> > 
> > This is incorrect.
> > 
> > You can extend "invoke-rc.d stop" with a --option that "quiesces the service
> > and terminates its running instances, but allows a (possibly immediate)
> > on-demand restart of the service by triggers such as socket activation"
> 
> As maintainer of sysv-rc, do you have any suggestions how this interface
> should look like? And where and how it should be documented?

Adding the sysvinit ML to Cc.  Summary and previous context here:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=736258#46

Short summary for sysvinit-devel:

1. Right now, invoke-rc.d stop does not block socket activation in systemd.

2. This causes problems in packages that do not expect it.

3. There's a desire in the systemd camp to have this functionality
   available, so it is not just a matter of fixing invoke-rc.d.

I proposed that invoke-rc.d be extended with a new interface that implements
the desired behaviour, and that the current interface (invoke-rc.d stop)
must be changed so that it blocks socket activation under systemd.


Extending invoke-rc.d:

Looks like documentation should be added to the package providing
invoke-rc.d, which is currently sysv-rc.  There is a README.invoke-rc.d in
sysv-rc that needs to be updated.  The invoke-rc.d(8) manpage also has to be
updated.

We might want to clarify things in debian-policy after we finish and deploy
the fixed invoke-rc.d implementation for systemd.


Here's a not very creative suggestion for the new invoke-rc.d extension:

invoke-rc.d --allow-on-demand-activation stop

Bikeshedding over that naming is welcome.


and for the manpage:

INIT SCRIPT ACTIONS
   ...

   Note: the stop action will stop the service and also disable any
   automatic on-demand activation triggers for the stopped service, such as
   socket activation in systemd.  The on-demand triggers will be re-enabled
   when the service is started again.

OPTIONS
   ...

   --allow-on-demand-activation
	By default, when invoke-rc.d stops a service, any further
	activation of the service will be blocked until the service
	is explicitly started again.

	To keep the on-demand triggers enabled (for example:
	socket activation), use the --allow-on-demand-activation
	when issuing the stop action.

	This option is currently only defined for the stop action, and
	will be ignored on the other actions.  For forward compatibility
	reasons, scripts must not specify this option for any other actions
	than stop.

	WARNING: maintainer scripts must be very careful when using this
	option, as the service might be activated while dpkg is replacing
	files during a package upgrade, or service configuration is being
	updated, etc.  Services that start multiple executable modules or
	that have dynamic linked modules should never use this option.


-- 
  "One disk to rule them all, One disk to find them. One disk to bring
  them all and in the darkness grind them. In the Land of Redmond
  where the shadows lie." -- The Silicon Valley Tarot
  Henrique Holschuh




More information about the Pkg-systemd-maintainers mailing list