Commit 1e35d95d authored by Yang Tse's avatar Yang Tse
Browse files

Add some message logging

parent d8387b41
Loading
Loading
Loading
Loading
+15 −12
Original line number Diff line number Diff line
@@ -147,7 +147,7 @@ sub checkalivepidfile {
# how many times a pid is repeated it will only be signalled once.
#
sub signalpids {
    my ($signal, $pids)=@_;
    my ($signal, $pids, $verbose)=@_;

    if((not defined $signal) || (not defined $pids)) {
        return;
@@ -155,6 +155,7 @@ sub signalpids {
    if($pids !~ /\s+/) {
        # avoid sorting if only one pid
        if(checkalivepid($pids) > 0) {
            printf ("* pid $pids signalled ($signal)\n") if($verbose);
            kill($signal, $pids);
        }
        return;
@@ -166,6 +167,7 @@ sub signalpids {
            if($prev != $pid) {
                $prev = $pid;
                if(checkalivepid($pid) > 0) {
                    printf ("* pid $pid signalled ($signal)\n") if($verbose);
                    kill($signal, $pid);
                }
            }
@@ -180,11 +182,11 @@ sub signalpids {
# with that pid is actually alive.
#
sub signalpidfile {
    my ($signal, $pidfile)=@_;
    my ($signal, $pidfile, $verbose)=@_;

    my $pid = pidfromfile($pidfile);
    if($pid > 0) {
        signalpids($signal, $pid);
        signalpids($signal, $pid, $verbose);
    }
}

@@ -257,16 +259,16 @@ sub waitalivepidfile {
# any of them in DEFAULT_TIMEOUT_STOP seconds then it returns 0.
#
sub stopprocess {
    my ($pids)=@_;
    my ($pids, $verbose)=@_;

    if(not defined $pids) {
        return 1;
    }
    signalpids("KILL", $pids);
    signalpids("KILL", $pids, $verbose);
    if(waitdeadpid($pids, $ONE_HALF_STOP_TIMEOUT) == 0) {
        signalpids("KILL", $pids);
        signalpids("KILL", $pids, $verbose);
        if(waitdeadpid($pids, $ONE_THIRD_STOP_TIMEOUT) == 0) {
            signalpids("KILL", $pids);
            signalpids("KILL", $pids, $verbose);
            if(waitdeadpid($pids, $ONE_SIXTH_STOP_TIMEOUT) == 0) {
                return 0; # at least one pid is still alive !!!
            }
@@ -284,7 +286,7 @@ sub stopprocess {
# returns 0.
#
sub stopprocesspidfile {
    my ($pidfile)=@_;
    my ($pidfile, $verbose)=@_;

    if(not defined $pidfile) {
        return 1;
@@ -292,7 +294,7 @@ sub stopprocesspidfile {
    my $ret = 1; # assume success stopping it
    my $pid = checkalivepidfile($pidfile);
    if($pid > 0) {
        $ret = stopprocess($pid);
        $ret = stopprocess($pid, $verbose);
    }
    unlinkpidfiles($pidfile);
    return $ret;
@@ -306,7 +308,7 @@ sub stopprocesspidfile {
# to stop it in DEFAULT_TIMEOUT_STOP seconds then it returns 0.
#
sub ftpkillslave {
    my ($id, $ext)=@_;
    my ($id, $ext, $verbose)=@_;

    if(not defined $id) {
        $id = "";
@@ -326,7 +328,7 @@ sub ftpkillslave {
        }
    }
    if($pids) {
        $ret = stopprocess($pids);
        $ret = stopprocess($pids, $verbose);
    }
    if($pidfiles) {
        unlinkpidfiles($pidfiles);
@@ -342,6 +344,7 @@ sub ftpkillslave {
# of them in DEFAULT_TIMEOUT_STOP seconds then returns 0.
#
sub ftpkillslaves {
    my ($verbose)=@_;

    my $ret = 1; # assume success stopping them
    my $pids = "";
@@ -359,7 +362,7 @@ sub ftpkillslaves {
        }
    }
    if($pids) {
        $ret = stopprocess($pids);
        $ret = stopprocess($pids, $verbose);
    }
    if($pidfiles) {
        unlinkpidfiles($pidfiles);
+1 −1
Original line number Diff line number Diff line
@@ -114,7 +114,7 @@ do {
sub catch_zap {
    my $signame = shift;
    print STDERR "ftpserver.pl received SIG$signame, exiting\n";
    ftpkillslaves();
    ftpkillslave($ftpdnum, $ext, 1);
    die "Somebody sent me a SIG$signame";
}
$SIG{INT} = \&catch_zap;
+42 −16
Original line number Diff line number Diff line
@@ -440,6 +440,7 @@ sub stoptestserver {
    my $serverpids = "";

    if($run{$serv}) {
        logmsg ("RUN: Stopping the $serv server...\n");
        if($run{$serv}{'slavepidfiles'}) {
            for $pidfile (split(" ", $run{$serv}{'slavepidfiles'})) {
                $pidfiles .= " $pidfile";
@@ -450,29 +451,41 @@ sub stoptestserver {
            }
            delete $run{$serv}{'slavepidfiles'};
        }
        if($run{$serv}{'pids'}) {
            $pid = $run{$serv}{'pids'};
            $serverpids .= " $pid";
            delete $run{$serv}{'pids'};
        }
        if($run{$serv}{'pidfile'}) {
            $pidfile = $run{$serv}{'pidfile'};
            $pidfiles .= " $pidfile";
            $pid = checkalivepidfile($pidfile);
            if($pid > 0) {
            if(($pid > 0) && ($serverpids !~ /\b$pid\b/)) {
                $serverpids .= " $pid";
            }
            delete $run{$serv}{'pidfile'};
        }
        if($run{$serv}{'pids'}) {
            $pid = $run{$serv}{'pids'};
            $serverpids .= " $pid";
            delete $run{$serv}{'pids'};
        }
        if($run{$serv}) {
            delete $run{$serv};
        }
    }
    if($slavepids) {
        $ret = stopprocess($slavepids);
        logmsg ("* slave pid(s) $slavepids\n");
    }
    if($serverpids) {
        logmsg ("* server pid(s) $serverpids\n");
    }
    if($slavepids) {
        $ret = stopprocess($slavepids, 1);
        if($ret == 0) {
            logmsg ("* slave process is still alive !!!\n");
        }
    }
    if($serverpids) {
        $ret = stopprocess($serverpids);
        $ret = stopprocess($serverpids, 1);
        if($ret == 0) {
            logmsg ("* server process is still alive !!!\n");
        }
    }
    if($pidfiles) {
        unlinkpidfiles($pidfiles);
@@ -1849,6 +1862,7 @@ sub stopalltestservers {

    for my $serv (keys %run) {
        if($run{$serv}) {
            logmsg ("RUN: Stopping the $serv server...\n");
            if($run{$serv}{'slavepidfiles'}) {
                for $pidfile (split(" ", $run{$serv}{'slavepidfiles'})) {
                    $pidfiles .= " $pidfile";
@@ -1859,30 +1873,42 @@ sub stopalltestservers {
                }
                delete $run{$serv}{'slavepidfiles'};
            }
            if($run{$serv}{'pids'}) {
                $pid = $run{$serv}{'pids'};
                $serverpids .= " $pid";
                delete $run{$serv}{'pids'};
            }
            if($run{$serv}{'pidfile'}) {
                $pidfile = $run{$serv}{'pidfile'};
                $pidfiles .= " $pidfile";
                $pid = checkalivepidfile($pidfile);
                if($pid > 0) {
                if(($pid > 0) && ($serverpids !~ /\b$pid\b/)) {
                    $serverpids .= " $pid";
                }
                delete $run{$serv}{'pidfile'};
            }
            if($run{$serv}{'pids'}) {
                $pid = $run{$serv}{'pids'};
                $serverpids .= " $pid";
                delete $run{$serv}{'pids'};
            }
            if($run{$serv}) {
                delete $run{$serv};
            }
        }
    }
    if($slavepids) {
        $ret = stopprocess($slavepids);
        logmsg ("* slave pid(s) $slavepids\n");
    }
    if($serverpids) {
        logmsg ("* server pid(s) $serverpids\n");
    }
    if($slavepids) {
        $ret = stopprocess($slavepids, 1);
        if($ret == 0) {
            logmsg ("* slave process is still alive !!!\n");
        }
    }
    if($serverpids) {
        $ret = stopprocess($serverpids);
        $ret = stopprocess($serverpids, 1);
        if($ret == 0) {
            logmsg ("* server process is still alive !!!\n");
        }
    }
    if($pidfiles) {
        unlinkpidfiles($pidfiles);