diff options
Diffstat (limited to 'doc/notifywhenup.html')
-rw-r--r-- | doc/notifywhenup.html | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/doc/notifywhenup.html b/doc/notifywhenup.html index 6f9b06b..9a288ac 100644 --- a/doc/notifywhenup.html +++ b/doc/notifywhenup.html @@ -60,19 +60,16 @@ against the s6 library or use any s6-specific construct: daemons can simply write a line to a file descriptor of their choice, then close that file descriptor, when they're ready to serve. This is a generic mechanism that some daemons already implement. -The administrator can -then run the daemon under <a href="s6-notifywhenup.html">s6-notifywhenup</a>, -which will properly catch the daemon's message and update a state file -itself, then notify all the subscribers -with a 'U' event, meaning that the service is now up. <br /> - Note that there is <em>still</em> a small race condition remaining: -if the daemon writes a line then instantly dies, and the supervisor -picks up the death before the <a href="s6-notifywhenup.html">s6-notifywhenup</a> -program picks up the line, it is possible for the event sequence written -to the fifodir to be wrong - 'd' before 'U'. This should be extremely -rare, but unfortunately the race condition is unavoidable. The only -way to be absolutely race-free is to have the daemon perform its -readiness notification itself, which requires specific support. +</p> + +<p> + s6 supports that mechanism natively: when the +<a href="servicedir.html">service directory</a> for the daemon contains +a valid <tt>notification-fd</tt> file, the daemon's supervisor, i.e. the +<a href="s6-supervise.html">s6-supervise</a> program, will properly catch +the daemon's message, update a state file (<tt>supervise/ready</tt>), then +then notify all the subscribers +with a 'U' event, meaning that the service is now up and ready. </p> <p> |