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

Colin Guthrie gmane at colin.guthr.ie
Sat Sep 21 03:24:30 PDT 2013


'Twas brillig, and Olivier Brunel at 20/09/13 21:53 did gyre and gimble:
> 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.

Ahh this sounds like it should address my problem reported the other day
"Services remain in "deactivating" state after all processes have exited
and cgroup is empty".

Will test it out.

Cheers

Col

> ---
> 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);
>                  }
>          }
>  
> 


-- 

Colin Guthrie
gmane(at)colin.guthr.ie
http://colin.guthr.ie/

Day Job:
  Tribalogic Limited http://www.tribalogic.net/
Open Source:
  Mageia Contributor http://www.mageia.org/
  PulseAudio Hacker http://www.pulseaudio.org/
  Trac Hacker http://trac.edgewall.org/



More information about the systemd-devel mailing list