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

Reply via email to