innreport_inn.pm with -w (Version 3)

Alexander Bartolich alexander.bartolich at gmx.at
Mon Jun 9 20:53:01 UTC 2008


The log files of my development systems were too simple to detect all diagnostics.
With the following changes innreport_inn.pm runs clean on a recent news.notice
of albasani.net

Index: scripts/innreport_inn.pm
===================================================================
--- scripts/innreport_inn.pm	(revision 7873)
+++ scripts/innreport_inn.pm	(working copy)
@@ -610,7 +610,8 @@
          $innd_cp_seconds{$server}         = $seconds;
          $innd_cp_stored_size{$server}     = $accptsize;
          $innd_cp_duplicated_size{$server} = $dupsize;
-        $innd_cp_rejected_size{$server}   = $rjctsize;
+        $innd_cp_rejected_size{$server}   = $rjctsize
+	  if defined($rjctsize);
        } elsif ($status eq "closed") {
          $innd_cp_accepted{$server}        = 0;
          $innd_cp_refused{$server}         = 0;
@@ -628,7 +629,8 @@
          $innd_rejected{$server} += $rejected;
          $innd_stored_size{$server} += $accptsize;
          $innd_duplicated_size{$server} += $dupsize;
-        $innd_rejected_size{$server} += $rjctsize;
+        $innd_rejected_size{$server} += $rjctsize
+	  if defined($rjctsize);
        }
        return 1;
      # closed (with times)
@@ -710,10 +712,14 @@
          my $average = $2 / ($3 || 1);
          $innd_time_time{$name} += $2;
          $innd_time_num{$name} += $3;
-        $innd_time_min{$name} = $average
-          if ($3 && $innd_time_min{$name} > $average);
-        $innd_time_max{$name} = $average
-          if ($3 && $innd_time_max{$name} < $average);
+	if ($3) {
+          my $min = $innd_time_min{$name};
+          $innd_time_min{$name} = $average
+            if (defined($min) && $min > $average);
+          my $max = $innd_time_max{$name};
+	  $innd_time_max{$name} = $average
+            if (defined($max) && $max < $average);
+        }
        }
        return 1;
      }
@@ -1702,10 +1708,14 @@
          my $average = $2 / ($3 || 1);
          $nnrpd_time_time{$name} += $2;
          $nnrpd_time_num{$name} += $3;
-        $nnrpd_time_min{$name} = $average
-          if ($3 && $nnrpd_time_min{$name} > $average);
-        $nnrpd_time_max{$name} = $average
-          if ($3 && $nnrpd_time_max{$name} < $average);
+	if ($3) {
+	  my $min = $nnrpd_time_min{$name};
+	  $nnrpd_time_min{$name} = $average
+	    if (defined($min) && $min > $average);
+	  my $max = $nnrpd_time_max{$name};
+	  $nnrpd_time_max{$name} = $average
+	    if (defined($max) && $max < $average);
+        }
        }
        return 1;
      }
@@ -2015,7 +2025,7 @@
        $cnfsstat{$buffer} = $class;

        # If the size changed, invalidate all of our running fill rate stats.
-      if ($size != $cnfsstat_size{$buffer}) {
+      if (!exists($cnfsstat_size{$buffer}) ||  $size != $cnfsstat_size{$buffer}) {
          delete $cnfsstat_rate{$buffer};
          delete $cnfsstat_samples{$buffer};
          delete $cnfsstat_time{$buffer};
@@ -2073,9 +2083,9 @@
  	my $dom = &host2dom($serv);
  	if ($nnrpd_no_permission{$serv}) {
  	  $nnrpd_dom_connect{$dom} -= $nnrpd_connect{$serv}
-	    if defined $nnrpd_dom_connect{$dom};
+	    if defined($nnrpd_dom_connect{$dom}) && defined($nnrpd_connect{$serv});
  	  $nnrpd_dom_groups{$dom}  -= $nnrpd_groups{$serv}
-	    if defined $nnrpd_dom_groups{$dom};
+	    if defined($nnrpd_dom_groups{$dom}) && defined($nnrpd_groups{$serv});
  	  $nnrpd_dom_times{$dom}   -= $nnrpd_times{$serv}
  	    if defined $nnrpd_dom_times{$dom};
  	  $nnrpd_connect{$serv} -= $nnrpd_no_permission{$serv};
@@ -2140,16 +2150,26 @@
      # Sum all incoming traffic for each full server.
      foreach $key (keys (%innd_connect)) {
        ($hostname, $channel) = split(':', $key);
-      $innd_seconds_sum{$hostname} += $innd_seconds{$key};
-      $innd_connect_sum{$hostname} += $innd_connect{$key};
-      $innd_offered_sum{$hostname} += $innd_offered{$key};
-      $innd_accepted_sum{$hostname} += $innd_accepted{$key};
-      $innd_refused_sum{$hostname} += $innd_refused{$key};
-      $innd_rejected_sum{$hostname} += $innd_rejected{$key};
-      $innd_stored_size_sum{$hostname} += $innd_stored_size{$key};
-      $innd_duplicated_size_sum{$hostname} += $innd_duplicated_size{$key};
-      $innd_offered_size_sum{$hostname} += $innd_offered_size{$key};
-      $innd_rejected_size_sum{$hostname} += $innd_rejected_size{$key};
+      $innd_seconds_sum{$hostname} += $innd_seconds{$key}
+        if defined($innd_seconds{$key});
+      $innd_connect_sum{$hostname} += $innd_connect{$key}
+        if defined($innd_connect{$key});
+      $innd_offered_sum{$hostname} += $innd_offered{$key}
+        if defined($innd_offered{$key});
+      $innd_accepted_sum{$hostname} += $innd_accepted{$key}
+        if defined($innd_accepted{$key});
+      $innd_refused_sum{$hostname} += $innd_refused{$key}
+        if defined($innd_refused{$key});
+      $innd_rejected_sum{$hostname} += $innd_rejected{$key}
+        if defined($innd_rejected{$key});
+      $innd_stored_size_sum{$hostname} += $innd_stored_size{$key}
+        if defined($innd_stored_size{$key});
+      $innd_duplicated_size_sum{$hostname} += $innd_duplicated_size{$key}
+        if defined($innd_duplicated_size{$key});
+      $innd_offered_size_sum{$hostname} += $innd_offered_size{$key}
+        if defined($innd_offered_size{$key});
+      $innd_rejected_size_sum{$hostname} += $innd_rejected_size{$key}
+        if defined($innd_rejected_size{$key});
      }

      # adjust min/max of innd timer stats.



More information about the inn-patches mailing list