Mailing List Archive

r3853 - in trunk: c_src/KinoSearch perl/t
Author: creamyg
Date: 2008-09-09 16:02:02 -0700 (Tue, 09 Sep 2008)
New Revision: 3853

Modified:
trunk/c_src/KinoSearch/InvIndexer.c
trunk/perl/t/109-read_locking.t
trunk/perl/t/305-invindexer.t
Log:
Have InvIndexer recover gracefully from an interrupted indexing session.


Modified: trunk/c_src/KinoSearch/InvIndexer.c
===================================================================
--- trunk/c_src/KinoSearch/InvIndexer.c 2008-09-09 23:01:03 UTC (rev 3852)
+++ trunk/c_src/KinoSearch/InvIndexer.c 2008-09-09 23:02:02 UTC (rev 3853)
@@ -78,9 +78,10 @@
self->reader = IxReader_open(invindex, self->snapshot, NULL);
}

- /* Get a FilePurger. */
+ /* Get a FilePurger and zap any detritus from previous sessions. */
self->file_purger
= FilePurger_new(invindex, self->snapshot, self->lock_factory);
+ FilePurger_Purge(self->file_purger);

/* Name a new segment, create a SegInfo and a SegWriter. */
seg_name = Snapshot_New_Seg_Name(self->snapshot);

Modified: trunk/perl/t/109-read_locking.t
===================================================================
--- trunk/perl/t/109-read_locking.t 2008-09-09 23:01:03 UTC (rev 3852)
+++ trunk/perl/t/109-read_locking.t 2008-09-09 23:02:02 UTC (rev 3853)
@@ -29,13 +29,14 @@
my $folder = $invindex->get_folder;
my $schema = $invindex->get_schema;

+my $invindexer = KinoSearch::InvIndexer->new( invindex => $invindex );
+$invindexer->add_doc( { content => 'x' } );
+
# Artificially create commit lock.
my $outstream = $folder->open_outstream('commit.lock');
$outstream->print("{}");
$outstream->close;

-my $invindexer = KinoSearch::InvIndexer->new( invindex => $invindex );
-$invindexer->add_doc( { content => 'x' } );
{
my $captured;
local $SIG{__WARN__} = sub { $captured = shift; };

Modified: trunk/perl/t/305-invindexer.t
===================================================================
--- trunk/perl/t/305-invindexer.t 2008-09-09 23:01:03 UTC (rev 3852)
+++ trunk/perl/t/305-invindexer.t 2008-09-09 23:02:02 UTC (rev 3853)
@@ -2,7 +2,7 @@
use warnings;
use lib 'buildlib';

-use Test::More tests => 2;
+use Test::More tests => 3;

use KinoSearch::InvIndexer;
use KinoSearch::Store::RAMFolder;
@@ -21,6 +21,13 @@

my $invindexer = KinoSearch::InvIndexer->new( invindex => $invindex, );

+$invindexer->add_doc( { content => 'foo' } );
+undef $invindexer;
+
+$invindexer = KinoSearch::InvIndexer->new( invindex => $invindex, );
+$invindexer->add_doc( { content => 'foo' } );
+pass("Invindexer ignores garbage from interrupted session");
+
eval {
my $lock_factory = KinoSearch::Store::LockFactory->new(
folder => $folder,


_______________________________________________
kinosearch-commits mailing list
kinosearch-commits@rectangular.com
http://www.rectangular.com/mailman/listinfo/kinosearch-commits