]> git.donarmstrong.com Git - infobot.git/commitdiff
- minor mods to addForked wrt time.
authordms <dms@c11ca15a-4712-0410-83d8-924469b57eb5>
Wed, 10 Jan 2001 14:55:07 +0000 (14:55 +0000)
committerdms <dms@c11ca15a-4712-0410-83d8-924469b57eb5>
Wed, 10 Jan 2001 14:55:07 +0000 (14:55 +0000)
- proper detection of dead forks.

git-svn-id: https://svn.code.sf.net/p/infobot/code/trunk@235 c11ca15a-4712-0410-83d8-924469b57eb5

blootbot/src/Shm.pl

index 27b95198e02ba6f2ef39fd92ca5440db7c4d9abf..5fca753d55cd01fef11fb5118ba5fea36bfea503 100644 (file)
@@ -109,27 +109,30 @@ sub addForked {
     }
 
     if (exists $forked{$name}) {
-       my $time = $forked{$name}{Time};
+       my $time        = $forked{$name}{Time};
+       my $continue    = 0;
+
        if (-d "/proc/$forked{$name}{PID}") {
            &status("fork: still running; good. BAIL OUT.");
        } else {
-           &status("fork: lost the fork? REMOVE IT!");
+           &WARN("Found dead fork; removing and resetting.");
+           $continue = 1;
        }
 
-       if (time() - $time > 900) {     # stale fork > 15m.
+       if ($continue) {
+           # NOTHING.
+       } elsif (time() - $time > 900) {        # stale fork > 15m.
            &status("forked: forked{$name} presumably exited without notifying us.");
-           $forked{$name}{Time} = time();
-           return 1;
        } else {                                # fresh fork.
-           &msg($who, "$name is already running ". &Time2String(time() - $forked{$name}));
+           &msg($who, "$name is already running ". &Time2String(time() - $time));
            return 0;
        }
-    } else {
-       $forked{$name}{Time}    = time();
-       $forkedtime             = time();
-       $count{'Fork'}++;
-       return 1;
     }
+
+    $forked{$name}{Time}       = time();
+    $forkedtime                        = time();
+    $count{'Fork'}++;
+    return 1;
 }
 
 sub delForked {
@@ -152,7 +155,7 @@ sub delForked {
        &ERROR("delForked: forked{$name} does not exist. should not happen.");
     }
 
-    &status("fork finished for '$name'.");
+    &status("--- fork finished for '$name' ---");
 
     POSIX::_exit(0);
 }