You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by mm...@apache.org on 2007/08/24 16:55:12 UTC

svn commit: r569406 - in /spamassassin/trunk/lib/Mail: SpamAssassin.pm SpamAssassin/AsyncLoop.pm SpamAssassin/Dns.pm SpamAssassin/DnsResolver.pm

Author: mmartinec
Date: Fri Aug 24 07:55:11 2007
New Revision: 569406

URL: http://svn.apache.org/viewvc?rev=569406&view=rev
Log:
Taking advantage of the new jm's ScopedTimer, get rid of passing around waiting_time in AsyncLoop; select sleep time now shows up as 'poll_dns_idle' in general timing report

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/AsyncLoop.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/Dns.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/DnsResolver.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin.pm?rev=569406&r1=569405&r2=569406&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin.pm Fri Aug 24 07:55:11 2007
@@ -1464,9 +1464,10 @@
   my $total = $latest - $earliest;
   my @str = ();
   foreach my $name (@{$self->{timers_order}}) {
-    my $elapsed = ($self->{timers}->{$name}->{elapsed}||0);
+    my $elapsed = $self->{timers}->{$name}->{elapsed} || 0;
     my $pc = $total <= 0 || $elapsed >= $total ? 100 : ($elapsed/$total)*100;
-    push @str, sprintf("%s: %.0f (%.1f%%)", $name, $elapsed*1000, $pc);
+    my $fmt = $elapsed >= 0.002 ? "%.0f" : "%.2f";
+    push @str, sprintf("%s: $fmt (%.1f%%)", $name, $elapsed*1000, $pc);
   }
 
   return sprintf("timing: total %.0f ms - %s", $total*1000, join(", ", @str));

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/AsyncLoop.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/AsyncLoop.pm?rev=569406&r1=569405&r2=569406&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/AsyncLoop.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/AsyncLoop.pm Fri Aug 24 07:55:11 2007
@@ -216,7 +216,6 @@
   my ($self, $timeout, $allow_aborting_of_expired) = @_;
   my $alldone = 0;
   my $anydone = 0;
-  my $waiting_time = 0;
   my $allexpired = 1;
   my %typecount;
 
@@ -234,8 +233,7 @@
       # dbg("async: before select, timeout=%.1f", $timeout)  if $timeout > 0;
       $self->{last_poll_responses_time} = $now;
       my $nfound;
-      ($nfound, $waiting_time) =
-        $self->{main}->{resolver}->poll_responses($timeout);
+      $nfound = $self->{main}->{resolver}->poll_responses($timeout);
       dbg("async: select found %s responses ready", !$nfound ? 'no' : $nfound);
     }
 
@@ -307,7 +305,7 @@
     $alldone = 1;      # abort remaining
   };
 
-  return wantarray ? ($alldone,$anydone,$waiting_time) : $alldone;
+  return wantarray ? ($alldone,$anydone) : $alldone;
 }
 
 # ---------------------------------------------------------------------------

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Dns.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Dns.pm?rev=569406&r1=569405&r2=569406&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Dns.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Dns.pm Fri Aug 24 07:55:11 2007
@@ -331,14 +331,12 @@
 
   dbg("dns: harvest_until_rule_completes");
   my $result = 0;
-  my $total_waiting_time = 0;
 
   for (my $first=1;  ; $first=0) {
     # complete_lookups() may call completed_callback(), which may
     # call start_lookup() again (like in Plugin::URIDNSBL)
-    my ($alldone,$anydone,$waiting_time) =
+    my ($alldone,$anydone) =
       $self->{async}->complete_lookups($first ? 0 : 1.0,  1);
-    $total_waiting_time += $waiting_time;
 
     $result = 1  if $self->is_rule_complete($rule);
     last  if $result || $alldone;
@@ -346,8 +344,6 @@
     dbg("dns: harvest_until_rule_completes - check_tick");
     $self->{main}->call_plugins ("check_tick", { permsgstatus => $self });
   }
-  dbg("dns: timing: %.3f s sleeping in harvest_until_rule_completes",
-      $total_waiting_time)  if $total_waiting_time > 0;
 
   return $result;
 }
@@ -356,10 +352,8 @@
   my ($self) = @_;
 
   dbg("dns: harvest_dnsbl_queries");
-  my $total_waiting_time = 0;
 
   for (my $first=1;  ; $first=0) {
-
     # complete_lookups() may call completed_callback(), which may
     # call start_lookup() again (like in Plugin::URIDNSBL)
 
@@ -367,9 +361,8 @@
     # complete_lookups a chance to ripe any available results and
     # abort overdue requests, without needlessly waiting for more
 
-    my ($alldone,$anydone,$waiting_time) =
+    my ($alldone,$anydone) =
       $self->{async}->complete_lookups($first ? 0 : 1.0,  1);
-    $total_waiting_time += $waiting_time;
 
     last  if $alldone;
 
@@ -381,8 +374,6 @@
   $self->{async}->abort_remaining_lookups();
   $self->{async}->log_lookups_timing();
   $self->mark_all_async_rules_complete();
-  dbg("dns: timing: %.3f s sleeping in harvest_dnsbl_queries",
-      $total_waiting_time)  if $total_waiting_time > 0;
   1;
 }
 

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/DnsResolver.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/DnsResolver.pm?rev=569406&r1=569405&r2=569406&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/DnsResolver.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/DnsResolver.pm Fri Aug 24 07:55:11 2007
@@ -397,23 +397,23 @@
   return if $self->{no_resolver};
   return if !$self->{sock};
   my $cnt = 0;
-  my $waiting_time = 0;
 
   my $rin = $self->{sock_as_vec};
   my $rout;
 
   for (;;) {
-    my $now_before = time;
-    my ($nfound, $timeleft) = select($rout=$rin, undef, undef, $timeout);
+    my ($nfound, $timeleft);
+    { my $timer;  # collects timestamp when variable goes out of scope
+      if (!defined($timeout) || $timeout > 0)
+        { $timer = $self->{main}->time_method("poll_dns_idle") }
+      ($nfound, $timeleft) = select($rout=$rin, undef, undef, $timeout);
+    }
     if (!defined $nfound || $nfound < 0) {
       warn "dns: select failed: $!";
       return;
     }
 
     my $now = time;
-    if ($now > $now_before && (!defined($timeout) || $timeout > 0)) {
-      $waiting_time += $now - $now_before;
-    }
     $timeout = 0;  # next time around collect whatever is available, then exit
     last  if $nfound == 0;
 
@@ -442,7 +442,7 @@
     }
   }
 
-  return wantarray ? ($cnt, $waiting_time) : $cnt;
+  return $cnt;
 }
 
 ###########################################################################