]> git.donarmstrong.com Git - infobot.git/blobdiff - blootbot/src/IRC/Schedulers.pl
- added debugging to newsFlush()
[infobot.git] / blootbot / src / IRC / Schedulers.pl
index 484147d58d535a82ed29e5f7b1e6d4a05ff8c94d..5ec5802dff07fe2f3f8d1f05f611b2c621c4d445 100644 (file)
@@ -298,12 +298,17 @@ sub newsFlush {
     my $delete = 0;
     my $oldest = time();
     foreach $chan (keys %::news) {
+       &DEBUG("sched: chan => $chan");
+
        foreach $item (keys %{ $::news{$chan} }) {
            my $t = $::news{$chan}{$item}{Expire};
+           &DEBUG("sched; item => $item");
 
            my $tadd    = $::news{$chan}{$item}{Time};
            $oldest     = $tadd if ($oldest > $tadd);
 
+           &DEBUG("sched: t => $t");
+
            next if ($t == 0 or $t == -1);
            if ($t < 1000) {
                &status("newsFlush: Fixed Expire time for $chan/$item, should not happen anyway.");
@@ -311,7 +316,11 @@ sub newsFlush {
                next;
            }
 
+           my $delta = $t - time();
+           &DEBUG("news: delta: $delta");
+
            next unless (time() > $t);
+
            # todo: show how old it was.
            delete $::news{$chan}{$item};
            &VERB("NEWS: deleted '$item'", 2);
@@ -319,6 +328,11 @@ sub newsFlush {
        }
     }
 
+    if ($delete) {
+       &DEBUG("sched: Writing news....");
+       &News::writeNews();
+    }
+
     # todo: flush users aswell.
     my $duser  = 0;
     foreach $chan (keys %::newsuser) {
@@ -352,6 +366,11 @@ sub chanlimitCheck {
        delete $sched{"chanlimitCheck"}{RUNNING};
     }
 
+    if (scalar keys %netsplitservers) {
+       &WARN("clC: netsplit active (2); skipping. (netsplit => $netsplit)");
+       return;
+    }
+
     foreach $chan ( &ChanConfList("chanlimitcheck") ) {
        next unless (&validChan($chan));
 
@@ -364,7 +383,11 @@ sub chanlimitCheck {
            ### run NAMES again and flush it.
        }
 
-       next unless (!defined $limit or $limit != $newlimit);
+       next unless (!defined $limit);
+       if (defined $limit and $limit == $newlimit) {
+           $cache{chanlimitChange}{$chan} = time();
+           next;
+       }
 
        if (!exists $channels{$chan}{'o'}{$ident}) {
            &status("ChanLimit: dont have ops on $chan.") unless (exists $cache{warn}{chanlimit}{$chan});
@@ -547,9 +570,9 @@ sub seenFlush {
     &status("Flushed $flushed seen entries.")          if ($flushed);
     &VERB(sprintf("  new seen: %03.01f%% (%d/%d)",
        $stats{'new'}*100/($stats{'count_old'} || 1),
-       $stats{'new'}, $stats{'count_old'} ), 2)        if ($stats{'new'});
+       $stats{'new'}, ( $stats{'count_old'} || 1) ), 2) if ($stats{'new'});
     &VERB(sprintf("  now seen: %3.1f%% (%d/%d)",
-       $stats{'old'}*100/&countKeys("seen"),
+       $stats{'old'}*100 / ( &countKeys("seen") || 1),
        $stats{'old'}, &countKeys("seen") ), 2)         if ($stats{'old'});
 
     &WARN("scalar keys seenflush != 0!")       if (scalar keys %seenflush);
@@ -566,7 +589,7 @@ sub leakCheck {
        delete $sched{"leakCheck"}{RUNNING};
     }
 
-    # flood.
+    # flood. this is dealt with in floodLoop()
     foreach $blah1 (keys %flood) {
        foreach $blah2 (keys %{ $flood{$blah1} }) {
            $count += scalar(keys %{ $flood{$blah1}{$blah2} });
@@ -581,7 +604,7 @@ sub leakCheck {
            $count += scalar(keys %{ $floodjoin{$blah1}{$blah2} });
        }
     }
-    &DEBUG("leak: hash flood has $count total keys.",2);
+    &DEBUG("leak: hash floodjoin has $count total keys.",2);
 
     # floodwarn.
     $count = scalar(keys %floodwarn);
@@ -598,6 +621,11 @@ sub leakCheck {
        }
     }
 
+    # chanstats
+    $count = scalar(keys %chanstats);
+    &DEBUG("leak: hash chanstats has $count total keys.",2);
+
+    # nuh.
     my $delete = 0;
     foreach (keys %nuh) {
        next if (&IsNickInAnyChan($_));
@@ -647,8 +675,8 @@ sub ircCheck {
     }
 
     my @x      = &getJoinChans();
-    my $iconf = scalar( @x );
-    my $inow  = scalar( keys %channels );
+    my $iconf  = scalar( @x );
+    my $inow   = scalar( keys %channels );
     if ($iconf > 2 and $inow * 2 <= $iconf) {
        &FIXME("ircCheck: current channels * 2 <= config channels. FIXME.");
        @joinchan       = @x;
@@ -851,6 +879,7 @@ sub shmFlush {
 
 ### this is semi-scheduled
 sub getNickInUse {
+    &DEBUG("gNIU: ident => $ident, ircNick => $param{'ircNick'}");
     if ($ident eq $param{'ircNick'}) {
        &status("okay, got my nick back.");
        return;
@@ -1160,8 +1189,10 @@ sub mkBackup {
     }
     return unless ($backup);
 
+    my $age = &Time2String(time() - (stat $file)[9]);
+
     ### TODO: do internal copying.
-    &status("Backup: $file to $file~");
+    &status("Backup: $file ($age)");
     CORE::system("/bin/cp $file $file~");
 }