[Mulgara-svn] r1376 - trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene
ronald at mulgara.org
ronald at mulgara.org
Tue Nov 11 13:37:27 UTC 2008
Author: ronald
Date: 2008-11-11 05:37:26 -0800 (Tue, 11 Nov 2008)
New Revision: 1376
Modified:
trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/FullTextStringIndex.java
trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/FullTextStringIndexUnitTest.java
Log:
Discard the lucene indexers after a rollback, as a rollback implicitly closes
them. Also added tests for rollback.
Modified: trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/FullTextStringIndex.java
===================================================================
--- trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/FullTextStringIndex.java 2008-11-11 13:37:20 UTC (rev 1375)
+++ trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/FullTextStringIndex.java 2008-11-11 13:37:26 UTC (rev 1376)
@@ -712,6 +712,7 @@
logger.debug("Rolling back fulltext indexes");
}
+ closeIndexers = true;
if (indexer != null) indexer.rollback();
}
Modified: trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/FullTextStringIndexUnitTest.java
===================================================================
--- trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/FullTextStringIndexUnitTest.java 2008-11-11 13:37:20 UTC (rev 1375)
+++ trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/FullTextStringIndexUnitTest.java 2008-11-11 13:37:26 UTC (rev 1376)
@@ -104,6 +104,7 @@
TestSuite suite = new TestSuite();
suite.addTest(new FullTextStringIndexUnitTest("testFullTextStringPool"));
suite.addTest(new FullTextStringIndexUnitTest("testFullTextStringPoolwithFiles"));
+ suite.addTest(new FullTextStringIndexUnitTest("testFullTextStringPoolTransactions"));
return suite;
}
@@ -215,8 +216,8 @@
String has = "http://mulgara.org/mulgara/document#has";
//Clean any existing indexes.
+ cache.close();
cache.removeAllIndexes();
- cache.close();
cache = new LuceneIndexerCache(indexDirectory);
//create the index
@@ -337,8 +338,8 @@
try {
// make sure the index directory is empty
+ cache.close();
assertTrue("Unable to remove all index files", cache.removeAllIndexes());
- cache.close();
cache = new LuceneIndexerCache(indexDirectory);
// create a new index
@@ -432,4 +433,77 @@
}
}
}
+
+ /**
+ * Test commit and rollback, with and without a prepare.
+ *
+ * @throws Exception Test fails
+ */
+ public void testFullTextStringPoolTransactions() throws Exception {
+ doTestFullTextStringPoolTransactions(false);
+ doTestFullTextStringPoolTransactions(true);
+ }
+
+ private void doTestFullTextStringPoolTransactions(boolean prepare) throws Exception {
+ // create a new index direcotry
+ LuceneIndexerCache cache = new LuceneIndexerCache(indexDirectory);
+ FullTextStringIndex index = null;
+
+ String document = "http://mulgara.org/mulgara/document#";
+ String has = "http://mulgara.org/mulgara/document#has";
+
+ try {
+ //Clean any existing indexes.
+ cache.close();
+ cache.removeAllIndexes();
+ cache = new LuceneIndexerCache(indexDirectory);
+
+ //create the index
+ index = new FullTextStringIndex(cache, true, false);
+
+ // Add strings to the index
+ for (String literal : theStrings) {
+ index.add(document, has, literal);
+ }
+
+ // roll back
+ if (prepare)
+ index.prepare();
+ index.rollback();
+ index.close();
+
+ // ensure strings are not there
+ index = new FullTextStringIndex(cache, true, false);
+
+ for (String literal : theStrings) {
+ FullTextStringIndex.Hits hits = index.find(document, has, literal);
+ assertTrue("Unexpectedly found '" + literal + "'", hits.length() == 0);
+ }
+
+ // add strings to index again
+ for (String literal : theStrings) {
+ index.add(document, has, literal);
+ }
+
+ // this time commit
+ if (prepare)
+ index.prepare();
+ index.commit();
+ index.close();
+
+ // ensure strings are there now
+ index = new FullTextStringIndex(cache, true, false);
+
+ for (String literal : theStrings) {
+ FullTextStringIndex.Hits hits = index.find(document, has, literal);
+ assertTrue("Did not find '" + literal + "'", hits.length() != 0);
+ }
+ } finally {
+ // close the fulltextstringpool
+ if (index != null)
+ index.close();
+ cache.close();
+ assertTrue("Unable to remove all index files", cache.removeAllIndexes());
+ }
+ }
}
More information about the Mulgara-svn
mailing list