Changeset 274

Show
Ignore:
Timestamp:
11/22/06 03:20:29 (6 years ago)
Author:
lincoln
Message:

enforce max_runtime of components

Files:
2 modified

Legend:

Unmodified
Added
Removed
  • engines/dog

    r267 r274  
    33my $myprogname = 'dog'; 
    44my $progname = 'shepherd'; 
    5 my $version = '0.3.10'; 
     5my $version = '0.3.11'; 
    66 
    77# 'dog' 
     
    250250            printf "SHEPHERD: Excuting command: $comm\n"; 
    251251            chdir "$CWD/grabbers/$grabber/"; 
    252             $retval = call_prog($comm); 
     252            $retval = call_prog($comm,(query_config($grabber,'max_runtime')*60)); 
    253253            chdir $CWD; 
    254254        } 
     
    13871387    my $dir = sprintf "%s/%ss/%s/",$CWD,$data_processor_type,$data_processor_name; 
    13881388    chdir $dir; 
    1389     my $retval = call_prog($comm); 
     1389    my $retval = call_prog($comm,(query_config($grabber,'max_runtime')*60)); 
    13901390    chdir $CWD; 
    13911391 
     
    15841584sub call_prog 
    15851585{ 
    1586     my $prog = shift; 
     1586    my ($prog,$timeout) = @_; 
     1587    $timeout = 0 if (!defined $timeout); 
     1588 
    15871589    if (!(open(PROG,"$prog|"))) { 
    15881590        printf "warning: couldn't exec \"$prog\": $!\n"; 
    15891591        return -1; 
    15901592    } 
    1591     while(<PROG>) { 
    1592         print $_; 
    1593     } 
    1594     close(PROG); 
     1593 
     1594    eval { 
     1595        local $SIG{ALRM}; 
     1596        if ($timeout > 0) { 
     1597            $SIG{ALRM} = sub { die "alarm\n" }; 
     1598            alarm $timeout; # set alarm 
     1599        } 
     1600        while(<PROG>) { 
     1601            print $_; 
     1602        } 
     1603        alarm(0) if ($timeout > 0); # cancel alarm 
     1604        close(PROG); 
     1605    }; 
     1606    if ($@) { 
     1607        die unless $@ eq "alarm\n";   # propagate unexpected errors 
     1608 
     1609        # timeout 
     1610        printf "prog ran for $timeout seconds, stopping it.\n"; 
     1611        close(PROG); 
     1612    } 
    15951613 
    15961614    if ($? == -1) { 
  • status

    r272 r274  
    11application     shepherd            0.3.22 
    2 engine          dog                 0.3.10 
     2engine          dog                 0.3.11 
    33grabber         yahoo7widget        1.58-r1 
    44grabber         rex                 3.3.7