innwatch forks without reason
Julien ÉLIE
julien at trigofacile.com
Mon Sep 15 17:26:45 UTC 2014
Hi Lauri,
> There's still at least one race condition, when stopping the service
> right after starting it:
>
> [ Sep 15 15:22:22 Executing start method ("/opt/news/bin/rc.news"). ]
> Starting ovdb.
> ovdb_init: database is quiescent, running normal recovery
> ovdb_init: starting ovdb monitor
> Starting innd.
> Scheduled start of /opt/news/bin/innwatch.
> [ Sep 15 15:22:25 Method "start" exited with status 0. ]
> [ Sep 15 15:22:25 Stopping because service disabled. ]
> [ Sep 15 15:22:25 Executing stop method ("/opt/news/bin/rc.news stop").
> ]
> Stopping innd: ctlinnd: no innd.pid file; did server die?
> ctlinnd: cannot send "shutdown" command (dead server failure): No such process
>
> Stopping ovdb_monitor:
> [ Sep 15 15:22:25 Method "stop" exited with status 0. ]
How is it supposed to be handled? When starting the service, should we
wait until innd has written its pid file? (within a reasonable timeout
of 10s?)
>> I would have liked to have code that conciliates the two behaviours
>> (sleep being a builtin or not)...
>
> Right, I guess forking works there. But it might be worth considering to
> call the utility with path to be sure that a builtin isn't used.
We would have to test (at configure time) whether an utility exists, and
have the two logics (utility and builtin) in our scripts. I am unsure
adding this complexity is worthwhile...
--
Julien ÉLIE
« Ad iura renunciata, non datur regressus. »
More information about the inn-workers
mailing list