Re: s6-rc-update initial findings

From: Laurent Bercot <ska-skaware_at_skarnet.org>
Date: Thu, 17 Sep 2015 00:16:43 +0200

On 14/09/2015 08:25, Colin Booth wrote:
> Moved all the files for the various s6-supervise processes to use the
> new directories (that's a clever trick by the way)

  That's not clever, that's incredibly pedestrian, and ugly because
it's just not possible to do it 100% safely. As much as I love Unix,
working with the Unix filesystem primitives makes me want to tear my
hair out. They're weaker than the Ashley Madison security. They suck
more d*ck than a gay nightclub on a Saturday night. The only saving
grace, the one call that makes Unix filesystems usable, is rename(),
and where is that beauty declared? stdio.h. Ugh!

  So yeah, service directories are moved live, and it's not pretty.
It will work, probably all the time, but there's still a tiny window
where if the service dies and the ./finish script uses data in ./data
or ./env, it won't find it. It's generally not a disaster to have
a ./finish script fail,I've reduced the window as much as I could,
and you have to be incredibly unlucky to hit it, but it's still there
and I don't like it, and I can't do any better because Unix primitives.


> Things it didn't do right:
> Put the links back into /run/service

  This should now be fixed.


> There's a documentation oversight that should get corrected at some
> point. The docs should mention that this doesn't touch the original
> compiled database and that it's on the user to update their call to
> s6-rc-init before the next reboot.

  This too.

  On to more testing. Ugh. On to more procrastinating.

-- 
  Laurent
Received on Wed Sep 16 2015 - 22:16:43 UTC

This archive was generated by hypermail 2.3.0 : Sun May 09 2021 - 19:38:49 UTC