Changeset 3848

Show
Ignore:
Timestamp:
07/29/10 14:55:50 (2 years ago)
Author:
ligne
Message:

can't 'last' or 'next' out of a subroutine. so check for wait() errors back where it was. and if there was an error, no further action should be attempted, so restart the loop.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/node/lib/Munin/Node/ProxySpooler.pm

    r3847 r3848  
    8888    # Reap any dead pollers 
    8989    while (my $deceased = wait) { 
     90        if ($deceased < 0) { 
     91            last if $!{ECHILD};  # all the children are dead! 
     92 
     93            logger("wait() error: $!"); 
     94            next; 
     95        } 
     96 
    9097        $self->_restart_poller($deceased); 
    9198    } 
     
    264271 
    265272 
     273# takes the PID of a dead poller, and respawns it. 
    266274sub _restart_poller 
    267275{ 
    268     my ($self, $deceased) = @_; 
    269  
    270     if ($deceased < 0) { 
    271         last if $!{ECHILD};  # all the children are dead! 
    272         logger("wait() error: $!"); 
    273     } 
    274  
    275     my $service = delete $self->{pollers}->{$deceased}; 
     276    my ($self, $pid) = @_; 
     277 
     278    my $service = delete $self->{pollers}{$pid}; 
    276279 
    277280    my $exit   = ($? >> 8); 
    278281    my $signal = ($? & 127); 
    279     logger("Poller $deceased ($service) exited with $exit/$signal"); 
     282    logger("Poller $pid ($service) exited with $exit/$signal"); 
    280283 
    281284    # avoid restarting the poller if it was last restarted too recently.