[systemd-devel] [PATCH] Fix timeout when stopping Type=notify service

Lennart Poettering lennart at poettering.net
Mon Sep 30 20:08:10 PDT 2013


On Fri, 20.09.13 22:53, Olivier Brunel (jjk at jjacky.com) wrote:

> Since 41efeaec a call to service_unwatch_main_pid() is done from
> service_set_main_pid(), which is called upon receiving message MAINPID=
> 
> This had the side effect of not watching pid anymore, and would result in a
> useless timeout when stopping the service, as the unit wouldn't be identified
> from the pid, so not marked stopped which would result in systemd thinking this
> was a timeout.

I commited a different fix now in
7400b9d2e99938d17b281d7df43680eade18666e, but it's untested. Could you
check if this makes things work?

> ---
> I'm not exactly familiar with systemd's internals, so this might not be the
> correct way to fix this, please correct me if it isn't.
> 
>  src/core/service.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/src/core/service.c b/src/core/service.c
> index 246a86e..1dccdff 100644
> --- a/src/core/service.c
> +++ b/src/core/service.c
> @@ -3388,9 +3388,17 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags) {
>                          log_warning_unit(u->id,
>                                           "Failed to parse notification message %s", e);
>                  else {
> +                        int r;
> +
>                          log_debug_unit(u->id,
>                                         "%s: got %s", u->id, e);
>                          service_set_main_pid(s, pid);
> +                        r = unit_watch_pid(u, pid);
> +                        if (r < 0)
> +                                /* FIXME: we need to do something here */
> +                                log_warning_unit(u->id,
> +                                                 "Failed to watch PID %lu from service %s",
> +                                                 (unsigned long) pid, u->id);
>                  }
>          }
>  


Lennart

-- 
Lennart Poettering - Red Hat, Inc.


More information about the systemd-devel mailing list