diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2014-10-21 18:44:09 -0400 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2014-10-23 00:17:18 -0400 |
commit | a9becdd65bb4b64675bc0c109d14ab12b1ecd2b7 (patch) | |
tree | 45faa8c9e120afe1e8227926bc238d5e0eeb2920 /man | |
parent | 203af57fcdced5debfc26e1083eaefa031e322f4 (diff) |
sd-daemon,man: ignore missing $WATCHDOG_PID
Systemd 209 started setting $WATCHDOG_PID, and sd-daemon watch was
modified to check for this variable. This means that
sd_watchdog_enabled() stopped working with previous versions of
systemd. But sd-event is a public library and API and we must keep it
working even when a program compiled with a newer version of the
libary is used on a system running an older version of the manager.
getenv() and unsetenv() are fairly expensive calls, so optimize
sd_watchdog_enabled() by not calling them when unnecessary.
man: centralize the description of $WATCHDOG_PID and $WATCHDOG_USEC in
the sd_watchdog_enabled manpage. It is better not to repeat the same
stuff in two places.
Diffstat (limited to 'man')
-rw-r--r-- | man/sd_notify.xml | 15 | ||||
-rw-r--r-- | man/sd_watchdog_enabled.xml | 53 |
2 files changed, 41 insertions, 27 deletions
diff --git a/man/sd_notify.xml b/man/sd_notify.xml index fbb882dfd2..35f6f71ab3 100644 --- a/man/sd_notify.xml +++ b/man/sd_notify.xml @@ -192,17 +192,12 @@ <varname>WatchdogSec=</varname> is enabled for it. See <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry> - for details. It is recommended to send - this message if the - <varname>$WATCHDOG_PID</varname> - environment variable has been set to - the PID of the service process, in - every half the time interval that is - specified in the - <varname>$WATCHDOG_USEC</varname> - environment variable. See + for information how to enable this + functionality and <citerefentry><refentrytitle>sd_watchdog_enabled</refentrytitle><manvolnum>3</manvolnum></citerefentry> - for details.</para></listitem> + for the details of how the service can + check if the the watchdog is enabled. + </para></listitem> </varlistentry> </variablelist> diff --git a/man/sd_watchdog_enabled.xml b/man/sd_watchdog_enabled.xml index 4164027640..462d7c6617 100644 --- a/man/sd_watchdog_enabled.xml +++ b/man/sd_watchdog_enabled.xml @@ -69,30 +69,37 @@ which the manager will act on the service if it did not get such a notification.</para> + <para>If the <varname>$WATCHDOG_USEC</varname> + environment variable is set, and the + <varname>$WATCHDOG_PID</varname> variable is unset or + set to the PID of the current process, the service + manager expects notifications from this process. The + manager will usually terminate a service when it does + not get a notification message within the specified + time after startup and after each previous message. It + is recommended that a daemon sends a keep-alive + notification message to the service manager every half + of the time returned here. Notification messages may + be sent with + <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry> + with a message string of + <literal>WATCHDOG=1</literal>.</para> + <para>If the <parameter>unset_environment</parameter> parameter is non-zero, <function>sd_watchdog_enabled()</function> will unset the <varname>$WATCHDOG_USEC</varname> and <varname>$WATCHDOG_PID</varname> environment variables - before returning (regardless of whether the function call - itself succeeded or not). Further calls to - <function>sd_watchdog_enabled()</function> will then - return with zero, but the variable is no longer - inherited by child processes.</para> + before returning (regardless of whether the function + call itself succeeded or not). Those variables are no + longer inherited by child processes. Further calls to + <function>sd_watchdog_enabled()</function> will also + return with zero.</para> <para>If the <parameter>usec</parameter> parameter is non-NULL, <function>sd_watchdog_enabled()</function> - will return the timeout in µs for the watchdog - logic. The service manager will usually terminate a - service when it did not get a notification message - within the specified time after startup and after each - previous message. It is recommended that a daemon - sends a keep-alive notification message to the service - manager every half of the time returned - here. Notification messages may be sent with - <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry> - with a message string of - <literal>WATCHDOG=1</literal>.</para> + will write the timeout in µs for the watchdog + logic to it.</para> <para>To enable service supervision with the watchdog logic, use <varname>WatchdogSec=</varname> in service @@ -126,7 +133,6 @@ of the current process, under the assumption that in that case, the variables were set for a different process further up the process tree.</para> - </refsect1> <refsect1> @@ -157,6 +163,19 @@ </refsect1> <refsect1> + <title>History</title> + + <para>The watchdog functionality and the + <varname>$WATCHDOG_USEC</varname> variable were + added in systemd-41.</para> + + <para><function>sd_watchdog_enabled()</function> + function was added in systemd-209. Since that version + the <varname>$WATCHDOG_PID</varname> variable is also + set.</para> + </refsect1> + + <refsect1> <title>See Also</title> <para> <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>, |