Remove dupefile before restarting node.
[spider.git] / perl / DXDupe.pm
index 63fdcb2bb24534a41d7a970961b2edb34937f8d7..5b288d1f87b1b3f1d04f8f99caf8c485d3d0127f 100644 (file)
@@ -19,22 +19,11 @@ $default = 48*24*60*60;
 $lasttime = 0;
 $fn = "$main::data/dupefile";
 
-use vars qw($VERSION $BRANCH);
-$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
-$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/  || (0,0));
-$main::build += $VERSION;
-$main::branch += $BRANCH;
-
 sub init
 {
+       unlink $fn;
        $dbm = tie (%d, 'DB_File', $fn);
-       unless ($dbm) {
-               eval { untie %d };
-               dbg("Dupefile $fn corrupted, removing...");
-               unlink $fn;
-               $dbm = tie (%d, 'DB_File', $fn) or confess "can't open dupe file: $fn ($!)";
-               confess "cannot open $fn $!" unless $dbm; 
-       }
+       confess "cannot open $fn $!" unless $dbm;
 }
 
 sub finish
@@ -42,13 +31,14 @@ sub finish
        undef $dbm;
        untie %d;
        undef %d;
+       unlink $fn;
 }
 
 sub check
 {
-       my ($s, $t) = @_;
+       my $s = shift;
        return 1 if find($s);
-       add($s, $t);
+       add($s, shift);
        return 0;
 }
 
@@ -59,8 +49,8 @@ sub find
 
 sub add
 {
-       my ($s, $t) = @_;
-       $t = $main::systime + $default unless $t;
+       my $s = shift;
+       my $t = shift || $main::systime + $default;
        $d{$s} = $t;
 }
 
@@ -74,9 +64,11 @@ sub process
 {
        # once an hour
        if ($main::systime - $lasttime >=  3600) {
+               my @del;
                while (($k, $v) = each %d) {
-                       delete $d{$k} if $main::systime >= $v;
+                       push @del, $k  if $main::systime >= $v;
                }
+               delete $d{$_} for @del;
                $lasttime = $main::systime;
        }
 }
@@ -103,7 +95,7 @@ sub listdups
        my @out;
        for (sort { $d{$a} <=> $d{$b} } grep { m{$regex}i } keys %d) {
                my ($dum, $key) = unpack "a1a*", $_;
-               push @out, "$key = " . cldatetime($d{$_} - $dupage);
+               push @out, "$key = " . cldatetime($d{$_} - $dupage) . " expires " . cldatetime($d{$_});
        }
        return @out;
 }