You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by fe...@apache.org on 2006/06/27 06:34:26 UTC

svn commit: r417337 - in /spamassassin/trunk/lib/Mail: SpamAssassin.pm SpamAssassin/Bayes.pm

Author: felicity
Date: Mon Jun 26 21:34:25 2006
New Revision: 417337

URL: http://svn.apache.org/viewvc?rev=417337&view=rev
Log:
bug 4488: deal with a circular reference between Bayes and BayesStore -- when M::SA::finish() is called, make sure to delete the Bayes->BayesStore reference, which will then let everything else get cleaned up as expected.

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin.pm?rev=417337&r1=417336&r2=417337&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin.pm Mon Jun 26 21:34:25 2006
@@ -561,7 +561,7 @@
 
 sub finish_learner {
   my $self = shift;
-  $self->{bayes_scanner}->finish() if $self->{bayes_scanner};
+  $self->{bayes_scanner}->sanity_check_is_untied(1) if $self->{bayes_scanner};
   1;
 }
 

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm?rev=417337&r1=417336&r2=417337&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm Mon Jun 26 21:34:25 2006
@@ -262,6 +262,7 @@
   # use Carp qw(cluck); cluck "stack trace at untie";
 
   $self->{store}->untie_db();
+  delete $self->{store};
 }
 
 sub sa_die { Mail::SpamAssassin::sa_die(@_); }
@@ -270,12 +271,13 @@
 
 sub sanity_check_is_untied {
   my $self = shift;
+  my $quiet = shift;
 
   # do a sanity check here.  Wierd things happen if we remain tied
   # after compiling; for example, spamd will never see that the
   # number of messages has reached the bayes-scanning threshold.
   if ($self->{store}->db_readable()) {
-    warn "bayes: oops! still tied to bayes DBs, untying\n";
+    warn "bayes: oops! still tied to bayes DBs, untying\n" unless $quiet;
     $self->{store}->untie_db();
   }
 }