[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