Ricardo Garcia wrote:
> On Thu, Apr 17, 2008 at 6:02 PM, Jens Persson <[EMAIL PROTECTED]> wrote:
>> Buenas noches ppl!
>>
>>  I ran into a little problem on IRC and am a bit clueless so I just pass
>>  it on to the pros:
>>
>>  <oberon> hi
>>  <oberon> is there a keyword I can put in an .i file that will prevent a
>>  daemon from restarting when a daemon is uses/needs restarts ?
>>  <xerxes2> oberon: i'm not sure what you mean?
>>  <oberon> when there is a daemon A that uses/needs daemon B - if B
>>  restarts for whatever reason, A is forced to restart too
>>  <oberon> I wonder if there is a way to prevent this forced restart
>>  <xerxes2> hmm, i didnt know that.
>>  <xerxes2> i'll take it up with ismaell later.
>>  <xerxes2> sounds just stupid yes.
>>  <oberon> it's reasonable, but there should be a way to prevent this
>>  * Anathema` has quit (Read error: 110 (Connection timed out))
>>  <xerxes2> ok
>>  <xerxes2> as you said a keyword like "norestart" would solve it.
>>  <xerxes2> dunno if that exists.
>>  * fcr-sama has quit (Read error: 104 (Connection reset by peer))
>>  <oberon> actually there should be two levels of "norestart"
>>  <oberon> the simpler one is just "norestart;"
>>  <oberon> the more complex one will accept exceptions
>>  <xerxes2> hmm ok.
>>  <oberon> ie, when a daemon depends on A and B, when A restarts you dont
>>  want to restart, but whn B restarts you *do* want to restart
>>  <oberon> I'll settle for a simple "norestart;" for now .. :-)
>>  <xerxes2> ok. :D
>>  <Ditegen> if A needs B and B restarts: there should be restart handler in A
>>  <Ditegen> it either restarts or runs the script in restart handler
>>  <Ditegen> most simple case is A sends itself SIGHUP in the script
>>  * Anathema` ([EMAIL PROTECTED]) has joined #initng
>>  * Pix` ([EMAIL PROTECTED]) has joined #initng
>>  * Pix- ([EMAIL PROTECTED]) has joined #initng
>>  * Pix has quit (Read error: 110 (Connection timed out))
>>  * Pix- is now known as Pix
>>  * Pix` has quit (Read error: 113 (No route to host))
>>  <oberon> Ditegen, yeah, thats a better idea, but it will take a longer
>>  time to implement
>>  <oberon> that's why I said that I'll settle for a simple "norestart" for now
>>
>>  Greets Jens
> 
> I see a way to define the restarting... I think you might be barking
> at the wrong tree. I think that instead of specifying if a service
> should restart or not, we should specify whether a service or daemon
> should send a restart chain to its dependants. For this we can
> implement a "nochainrestart" (or "restartsfreely") directive. This
> would be wonderful for, say, setting up the random number generator
> for encryption services. They only need it to run once. It's also
> useful for other services that do only on-start setup chores, like the
> dkms autoinstaller present in some distros. Actually I tried to
> restart it once, and I ended up restarting the whole machine.
> 
> The pseudocode for the handling would be (I haven't read the code, so
> please forgive me):
> 
> service::onstop() {
>    if(!restartsfreely) {
>      send_dependency_down_events();
>    }
> }
> 
> But let's assume that specifying it on the other end is required. For
> this, I propose other directives: "needsonce" and "usesonce" (similar
> to php's include_once and require_once directives), which only depends
> on the service on startup (i.e. setting up a config file or
> something). This way we could specify which services should restart
> and which ones shouldn't.
> 
> The alternative would be "norestartfor", in which we could list the
> services/daemons that we want to restart. If we want to generalize
> that, we could use a "*" meaning any.
> 
> The pseudocode is pretty simple:
> 
> service::ondependencydown(dependencyname) {
>   if((not dependencyname in [norestartfor] ) and (norestartfor != "*" ) then {
>     shutdownservice("waiting for dep");
>   }
> }
> 
> But I actually don't know how the real code is handled. Anyway, this
> is a very interesting subject B-)

A plugin could be written with both ideas quite easily, the main problem 
at the moment there is no restart event to hook into, no way to tell a 
restart event from a stopping event.

I started looking at this when I read the irc log, I'll try and add 
something to SVN, and look into porting it to 0.6 if it works ok
-- 
_______________________________________________
Initng mailing list
[email protected]
http://jw.dyndns.org/mailman/listinfo/initng

Reply via email to