--- loncom/Attic/lonc 2000/02/08 17:34:24 1.5 +++ loncom/Attic/lonc 2000/07/25 16:03:57 1.7 @@ -12,7 +12,7 @@ # 6/4/99,6/5,6/7,6/8,6/9,6/10,6/11,6/12,7/14,7/19, # 10/8,10/9,10/15,11/18,12/22, -# 2/8 Gerd Kortemeyer +# 2/8,7/25 Gerd Kortemeyer # based on nonforker from Perl Cookbook # - server who multiplexes without forking @@ -40,6 +40,17 @@ while ($configline=) { } close(CONFIG); +# --------------------------------------------- Check if other instance running + +my $pidfile="$perlvar{'lonDaemons'}/logs/lonc.pid"; + +if (-e $pidfile) { + my $lfh=IO::File->new("$pidfile"); + my $pide=<$lfh>; + chomp($pide); + if (kill 0 => $pide) { die "already running"; } +} + # ------------------------------------------------------------- Read hosts file open (CONFIG,"$perlvar{'lonTabDir'}/hosts.tab") || die "Can't read host file"; @@ -64,8 +75,8 @@ sub REAPER { # ta $SIG{CHLD} = \&REAPER; my $pid = wait; my $wasserver=$children{$pid}; - &logthis( - "CRITICAL: Child $pid for server $wasserver died"); + &logthis("CRITICAL: " + ."Child $pid for server $wasserver died ($childatt{$wasserver})"); delete $children{$pid}; delete $childpid{$wasserver}; my $port = "$perlvar{'lonSockDir'}/$wasserver"; @@ -90,13 +101,14 @@ sub HUPSMAN { # sig } sub USRMAN { - %childatt=(); &logthis("USR1: Trying to establish connections again"); foreach $thisserver (keys %hostip) { $answer=subreply("ping",$thisserver); - &logthis( - "USR1: Ping $thisserver (pid >$childpid{$thisserver}<): >$answer<"); + &logthis("USR1: Ping $thisserver " + ."(pid >$childpid{$thisserver}<, $childatt{thisserver} attempts): " + ." >$answer<"); } + %childatt=(); } # -------------------------------------------------- Non-critical communication @@ -178,13 +190,12 @@ while (1) { # See who died and start new one foreach $thisserver (keys %hostip) { if (!$childpid{$thisserver}) { - if ($childatt{$thisserver}<=$childmaxattempt) { - my $ainfoatt=1*$childatt{$thisserver}; + if ($childatt{$thisserver}<=$childmaxattempts) { + $childatt{$thisserver}++; &logthis( "INFO: Trying to reconnect for $thisserver " - ."($ainfoatt of $childmaxattempts attempts)"); + ."($childatt{$thisserver} of $childmaxattempts attempts)"); make_new_child($thisserver); - $childatt{$thisserver}++; } } }