On Mon, Aug 07, 2017 at 01:30:44PM +0000, fumiyas(a)osstech.co.jp wrote:
>I've created patches for slapd to add systemd service notification
>(sd_notify(3)) support.
Thanks for working on this! I'm also interested in having this feature.
What do you think about including a slapd.service file? I know OpenLDAP
has traditionally not included an init script, but systemd units are
intended to be distro-agnostic as far as possible, and shipped by
upstream projects in most cases, unlike init scripts. Ideally I'd like
to include a template in the source and have the build system fill in
the autoconf'ed path (i.e. to slapd) and have 'make install' install it
to the right place.
Autoconf bits look fine to me.
>+ rc = sd_notifyf( 1,
>+ "READY=1\n"
>+ "STATUS=slapd: ready to serve connections...\n"
>+ "MAINPID=%lu",
>+ (unsigned long) getpid() );
unset_environment=1 seems reasonable, it's a little unfortunate that we
can't call (for example) sd_notify("STOPPING=1") afterward, but it feels
worthwhile compared to having to sanitize the environment when forking a
child process.
I'm not sure the STATUS= message adds value compared to just the basic
readiness notification; can you comment on why you included it?
I guess MAINPID= is actually needed, unless we run slapd with -d, regardless of
whether we set Type=forking or Type=notify. Not exactly "needed", but better to
have it than not.
I see you've placed this call later than the parent's exit point. Any
comments about the timing of this relative to the parent's exit, and to
the listener startup and so on? Are the listeners more likely to be
ready to serve connections at this point? I seem to recall that in the
past there was opposition to moving the parent's exit later, but I can't
remember why. (and I still wish we could do that, and dispense with the
ldapsearch-loop hacks...)
cheers,
Ryan