Changeset 3840

Show
Ignore:
Timestamp:
28/07/10 14:38:00 (2 years ago)
Author:
ligne
Message:

keep a track of when each poller was last restarted, and give up on them if it was too recent (currently <10s). should prevent a critically broken service from crashing over and over again.

maybe 10s should really be $service_interval...

Files:

Legend:

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

    r3839 r3840  
    5050 
    5151    my $self = __PACKAGE__->new(%args); 
     52 
     53    my %poller_restarted;  # when each service's poller was last restarted 
    5254 
    5355    # Daemonzises, and runs for cover. 
     
    9395        logger("Poller $deceased ($service) exited with $exit/$signal"); 
    9496 
     97        # avoid restarting the poller if it was last restarted too recently. 
     98        if (time - ($poller_restarted{$service} || 0) < 10) { 
     99            logger("Poller for '$service' last restarted at $poller_restarted{$service}.  Giving up."); 
     100            next; 
     101        } 
     102 
    95103        # Respawn the poller 
    96104        logger("Respawning poller for '$service'"); 
    97105        my $new_pid = $self->_launch_single_poller($service, $intervals->{$service}); 
    98106        $pollers->{$new_pid} = $service; 
     107        $poller_restarted{$service} = time; 
    99108    } 
    100109