Perl watchdog code
From miscellus
Perl watchdog script
This is really just an aide-memoir for myself and maybe of use to others.
Always liking to use ready made solutions, when I looked for a simple piece of code to prevent some beta perl code of mine from melting the core of this server, all I could find was Proc::Watchdog
, which did not suite my purpose as this lib monitors for hung processes. I just needed something I could simply insert into a sequence of possibly never-ending loops to prevent them running forever. This is the code and it does the job perfectly.
# die if the loop is called more than 150 times sub watchdog { my $self = shift; my $dog_name_or_number = shift || 'Un-named watchdog'; my $fail_count = 150; $h_watchdog->{$dog_name_or_number} ++; die "Watchdog $dog_name_or_number exceeded $fail_count cycles" if $h_watchdog->{$dog_name_or_number} > $fail_count; } # example problematic code while ( 'true') { print "Cooking the core"; $self->watchdog('melter number one'); for (1 .. 10000) { $self->watchdog('melter number two'); redo; } }