On 10. nov. 2005, at 17.33, Claus Klein wrote:
On Thursday 10 November 2005 14:45, Jan-Henrik Haukeland wrote:
On 9. nov. 2005, at 21.50, Claus Klein wrote:
I want to disable the start of a daemon until an barier file exist.
So I tried the following example configuration.
This will not work. The depend feature only make sure that services
are started or stopped in order. There is no sequential wait between
service start.
Ok, thanks,
but I can't understand why the sevice is started every cyle too
after the following messssage:
'crond' service timed out and will not be checked anymore
It's because you have a dependency, this override the timeout and
monit will try to restart the timed out service again when it restart
the depending process. I think this make sense - better to try one
more time if other services depends on this.
Another thing, I'm wondering if it would make better sense if
services in a dependency tree _was_ started sequential and that they
waited on each other before the next service in the chain started?
This means that if the first service in a chain failed to start all
the depending services will not be started either, which incidentally
also would make your example work.
But I'm not sure though, since the wait-and-move-to-next can only be
trigged by a running process having created a pidfile, but since
creation of a pidfile is usually done at the very start of a program
there may be lots of remaining initialization stuff. I mean, stopping
the chain and waiting for a pidfile may not give much more than
starting everything at once although in order, which is done today.
It is also arguable if you want to stop the whole service dependency
chain if one service cannot start. Lets say you run an appserver
that depends on a database server. Even if the database server failed
to start you may want to have the appserver running for e.g. serving
error-pages. On the other hand, you don't want processes to start if
they depend on a file-system or device that isn't there either. Hmm..
food for thought.
Right now dependencies are probably most useful during stop and
particularly restart, since during a restart monit _will_ in-fact
wait for a service to stop before it moves on to the next service in
the chain (it's the start of services that does not wait).
Slightly OT, this wait-continue behavior for stop creates the
unwanted side-effect that the httpd server also stops since all this
stuff runs in the same thread. I.e. during a service stop the HTTP
interface of monit is unresponsive. This is particularly notable if a
stop hangs (monit will only timeout the wait after 1 cycle). In other
words, sooner or later we need to change the start, stop and restart
of services because of this and may at the same time cleanup the
dependency stuff if someone have a better design solution, preferably
as a patch :)
--
Jan-Henrik Haukeland
Mobil +47 97141255
--
To unsubscribe:
http://lists.nongnu.org/mailman/listinfo/monit-general