You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by sh...@apache.org on 2009/02/11 16:18:16 UTC

svn commit: r743359 - in /lucene/solr/trunk/src: java/org/apache/solr/update/DirectUpdateHandler2.java test/org/apache/solr/update/DirectUpdateHandlerTest.java

Author: shalin
Date: Wed Feb 11 15:18:16 2009
New Revision: 743359

URL: http://svn.apache.org/viewvc?rev=743359&view=rev
Log:
SOLR-670 followup -- No need to do commit after calling rollback, also avoids AlreadyClosedException if commit is not called after rollback

Modified:
    lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler2.java
    lucene/solr/trunk/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java

Modified: lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler2.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler2.java?rev=743359&r1=743358&r2=743359&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler2.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler2.java Wed Feb 11 15:18:16 2009
@@ -185,8 +185,12 @@
 
   // must only be called when iwCommit lock held
   protected void rollbackWriter() throws IOException {
-    numDocsPending.set(0);
-    if (writer!=null) writer.rollback();
+    try {
+      numDocsPending.set(0);
+      if (writer!=null) writer.rollback();
+    } finally {
+      writer = null;
+    }
   }
 
   public int addDoc(AddUpdateCommand cmd) throws IOException {

Modified: lucene/solr/trunk/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java?rev=743359&r1=743358&r2=743359&view=diff
==============================================================================
--- lucene/solr/trunk/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java (original)
+++ lucene/solr/trunk/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java Wed Feb 11 15:18:16 2009
@@ -173,7 +173,6 @@
     // rollback "B"
     RollbackUpdateCommand rbkCmd = new RollbackUpdateCommand();
     updater.rollback(rbkCmd);
-    updater.commit(cmtCmd);
     
     // search - "B" should not be found.
     Map<String,String> args = new HashMap<String, String>();
@@ -184,6 +183,15 @@
             ,"//*[@numFound='1']"
             ,"//result/doc[1]/int[@name='id'][.='A']"
             );
+
+    // Add a doc after the rollback to make sure we can continue to add/delete documents
+    // after a rollback as normal
+    addSimpleDoc("ZZZ");
+    assertU(commit());
+    assertQ("\"ZZZ\" must be found.", req("q", "id:ZZZ")
+            ,"//*[@numFound='1']"
+            ,"//result/doc[1]/int[@name='id'][.='ZZZ']"
+            );
   }
 
   public void testDeleteRollback() throws Exception {
@@ -221,7 +229,6 @@
     // rollback "B"
     RollbackUpdateCommand rbkCmd = new RollbackUpdateCommand();
     updater.rollback(rbkCmd);
-    updater.commit(cmtCmd);
     
     // search - "B" should be found.
     assertQ("\"B\" should be found.", req
@@ -229,6 +236,15 @@
         ,"//result/doc[1]/int[@name='id'][.='A']"
         ,"//result/doc[2]/int[@name='id'][.='B']"
         );
+
+    // Add a doc after the rollback to make sure we can continue to add/delete documents
+    // after a rollback as normal
+    addSimpleDoc("ZZZ");
+    assertU(commit());
+    assertQ("\"ZZZ\" must be found.", req("q", "id:ZZZ")
+            ,"//*[@numFound='1']"
+            ,"//result/doc[1]/int[@name='id'][.='ZZZ']"
+            );
   }
   
   private void addSimpleDoc(String id) throws Exception {