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

Olivier Brunel jjk at jjacky.com
Tue Oct 1 05:57:12 PDT 2013


On 10/01/13 05:08, Lennart Poettering wrote:
> 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?

Yes, fixes the issue.

Thanks,
-j

> 
>> ---
>> 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
> 



More information about the systemd-devel mailing list