Hi,

THANK YOU!!!

The patch itself didn't help very mutch (stalled after the debug
statements), but it gave me a good starting point for more debugging.
Took me an hour, but then I found that this line never finished:

  $new_toks{$LAST_ATIME_DELTA_MAGIC_TOKEN} = $newdelta;

This is the first access to the new database. And then I found a
leftover and damaged "_toks.new" database lying around in
~/.spamassassin. Seems there is a sanity check missing. I added this
near the beginning of this sub:

  # since DB_File will not shrink a database (!!), we need to *create*
  # a new one instead.
  my $main = $self->{bayes}->{main};
  my $path = $main->sed_path ($main->{conf}->{bayes_path});
  my $name = $path.'_toks.new';

+  CHECKLOOP: while (1) {
+    for my $ext (@DB_EXTENSIONS) {
+      if (-e $name.$ext) {
+       warn "$name already exists (died expiry run?), please
clean up!";
+         $name .= $$;
+         next CHECKLOOP;
+      }
+    }
+    last CHECKLOOP;
+  }

and had to change one line near the end:

    # now rename in the new one.  Try several extensions
    for my $ext (@DB_EXTENSIONS) {
-      my $newf = $path.'_toks.new'.$ext;
+      my $newf = $name.$ext;

cu/2
Michael

On Sun, 11 Jan 2004 10:56:34 -0500, Bryan Hoover wrote:

>Michael Jacob wrote:
>> 
>> Hi,
>> 
>> something seems to be wrong with my bayes db, or is this considered
>> 'normal'? Log:
>
>I backed up my Bayes db, and ran with -D force-expire to see what it'd
>do.  I got pretty much what you show, except after the "something fishy"
>line, it paused for a moment or two, and then finished up with:
>
>debug: bayes: couldn't find a good delta atime, need more token
>difference, skipping expire.
>debug: Syncing complete.
>debug: bayes: 90800 untie-ing
>debug: bayes: 90800 untie-ing db_toks
>debug: bayes: 90800 untie-ing db_seen
>debug: bayes: files locked, now unlocking lock
>debug: unlock: 90800 unlink /usr/home/bhoover/.spamassassin/bayes.lock
>
>So that's the way it's supposed to go.  Did your run ever return?
>
>I saw a related thread in SA dev that might be helpful.  It regards a
>"problem" along the same lines, though not precisely -- your run never
>returned -- that may (along with application of the associated patch)
>give some insight.  The linked patch adds more debug output:
>
>news://news.gmane.org/[EMAIL PROTECTED]
>
>Copy the patch to a file, say, bayesstore-patch-file.patch, in your
>../Mail-SpamAssassin-2.60/lib/Mail/SpamAssassin directory, and run:
>
>patch < bayesstore-patch-file.patch
>
>You'll get more debug output when you run force-expire again.
>
>Most notable, with regards to the "problem", is the play between how big
>a set of tokens you want to expire -- given current number of tokens in
>db, and bayes_expiry_max_db_size -- and whether sa-learn can find a
>suitable atime for expiration selection.  The additional debug output
>helps to clarify this, but see the link (and sub-links there) for
>explaination.  This may not be your problem, but the added output may be
>helpful.
>
>> synced Bayes databases from journal in 0 seconds: 457 unique entries
>> (562 total entries)
>> debug: bayes: expiry check keep size, 75% of max: 112500
>> debug: bayes: token count: 196598, final goal reduction size: 84098
>
>So I read the above output to mean sa-learn wants to expire 84098
>tokens, bringing the size down to 112500 from 196598.  I assume then
>that's what it'll look for -- an atime that'll allow for that.  My
>understanding is if sa-learn can not find an atime allowing for less
>than or equal to the target number of token expirations, expiration will
>not be carried out.
>
>> debug: bayes: First pass?  Current: 1073772599, Last: 1073562102,
>> atime: 22118400, count: 2972, newdelta: 781658, ratio: 28.2967698519515
>> debug: bayes: something fishy, calculating atime (first pass)
>
>The expiration routine did not like what it saw in the above, so it went
>on to calculate/find a new atime with which to select tokens to expire,
>and apparently, never returned...  It's this part to which the patch
>adds more debug output.
>
>> and after that nothing, for
>> 
>>   PID USER     PRI  NI  SIZE  RSS SHARE STAT  LIB %CPU %MEM   TIME
>> COMMAND
>> 11464 root      14   0 15092  14M  1600 R       0 94.6  5.7  30:25
>> sa-learn
>> 
>> and running.
>
>Is bayes.lock in .spamassassin?  I assume you've killed the process by
>now, but you'll need to get rid of that lock file if it got left
>behind.  It's used when autolearning too, btw.
>
>Bryan
>
>> SpamAssassin is 2.61, Perl is:
>> 
>> Summary of my perl5 (revision 5.0 version 6 subversion 1)
>> configuration:
>>   Platform:
>>     osname=linux, osvers=XXX, archname=i686-linux
>>     uname='linux sps-c1s9p14.j-e-b.net XXX XXX i686 unknown '
>>     config_args=''
>>     hint=recommended, useposix=true, d_sigaction=define
>>     usethreads=undef use5005threads=undef useithreads=undef
>> usemultiplicity=undef
>>     useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef
>>     use64bitint=undef use64bitall=undef uselongdouble=undef
>>   Compiler:
>>     cc='cc', ccflags ='-fno-strict-aliasing -D_LARGEFILE_SOURCE
>> -D_FILE_OFFSET_BITS=64',
>>     optimize='-O2',
>>     cppflags='-fno-strict-aliasing'
>>     ccversion='', gccversion='2.95.3 19991030 (prerelease)',
>> gccosandvers=''
>>     intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
>>     d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
>>     ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
>> lseeksize=8
>>     alignbytes=4, usemymalloc=n, prototype=define
>>   Linker and Libraries:
>>     ld='cc', ldflags =' -L/usr/local/lib'
>>     libpth=/usr/local/lib /lib /usr/lib
>>     libs=-lnsl -lndbm -ldb -ldl -lm -lc -lposix -lcrypt -lutil
>>     perllibs=-lnsl -ldl -lm -lc -lposix -lcrypt -lutil
>>     libc=/lib/libc-2.1.1.so, so=so, useshrplib=false, libperl=libperl.a
>>   Dynamic Linking:
>>     dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef,
>> ccdlflags='-rdynamic'
>>     cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib'
>> 
>> Characteristics of this binary (from libperl):
>>   Compile-time options: USE_LARGE_FILES
>>   Built under linux
>>   Compiled at Jan  8 2002 10:55:38
>>   @INC:
>>     /opt/perl/lib/5.6.1/i686-linux
>>     /opt/perl/lib/5.6.1
>>     /opt/perl/lib/site_perl/5.6.1/i686-linux
>>     /opt/perl/lib/site_perl/5.6.1
>>     /opt/perl/lib/site_perl
>>     .
>> 
>> -------------------------------------------------------
>> This SF.net email is sponsored by: Perforce Software.
>> Perforce is the Fast Software Configuration Management System offering
>> advanced branching capabilities and atomic changes on 50+ platforms.
>> Free Eval! http://www.perforce.com/perforce/loadprog.html
>
>-- 
>My thinking is a passion.  I am very good at rooting out truffles for
>others; I myself take no pleasure in them.  I root out the problems with
>my snout, but all I can do with them is toss them back over my head. -
>(Soren Kierkegaard - Either/Or)
>
>http://www.wecs.com/content.htm
>
>This signature file is generated by Pick-a-Tag !
>Written by Jeroen van Vaarsel
>http://www.google.com/search?hl=en&ie=ISO-8859-1&q=pick-a-tag
>
>
>
>-------------------------------------------------------
>This SF.net email is sponsored by: Perforce Software.
>Perforce is the Fast Software Configuration Management System offering
>advanced branching capabilities and atomic changes on 50+ platforms.
>Free Eval! http://www.perforce.com/perforce/loadprog.html
>_______________________________________________
>Spamassassin-talk mailing list
>[EMAIL PROTECTED]
>https://lists.sourceforge.net/lists/listinfo/spamassassin-talk





-------------------------------------------------------
This SF.net email is sponsored by: Perforce Software.
Perforce is the Fast Software Configuration Management System offering
advanced branching capabilities and atomic changes on 50+ platforms.
Free Eval! http://www.perforce.com/perforce/loadprog.html
_______________________________________________
Spamassassin-talk mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/spamassassin-talk

Reply via email to