On 08/02/2015 22:12, Olivier Brunel wrote:
Except for that bit. I don't like that, and I'd really like an option to
turn that behavior off. Specifically, in my case the only scenario I can
imagine where the write would fail, i.e. daemon is down, would be
because it crashed/was restarted; Neither of which should mean to stop
the whole process.

 It's a question of safety. Imagine the daemon dies and never comes
back up. Should I let lines accumulate indefinitely in s6-log's bufalloc_1,
eating more and more memory until the inevitable oom ? Definitely not.
Then what ? Any other solution loses log lines.

 Plus, a write error likely means that the pipe between s6-log and the
auxiliary logger is broken. It can never be used again. It's impossible
to resume writing to another instance of the auxiliary daemon without
restarting s6-log. So, why keep stuff in a buffer that can probably never
be flushed again ? If you need that auxiliary logger, you have to restart
the pipeline. Kill your entire logging service, which will recreate the
pipe.

 You can avoid killing s6-log by fd-holding the reading end of the pipe:
have some other process keep it open. That's easy to do if you're
supervising the auxiliary logger. And in that case, s6-log will never
receive an EPIPE, it will just detect non-readability, and keep the
log lines in memory until your auxiliary logger has restarted. That is
the way to obtain the behaviour you want.

--
 Laurent

Reply via email to