Author: shalin
Date: Thu Dec 11 00:25:38 2008
New Revision: 725616

URL: http://svn.apache.org/viewvc?rev=725616&view=rev
Log:
SOLR-886 -- DataImportHandler should rollback when an import fails or it is 
aborted

Modified:
    lucene/solr/trunk/CHANGES.txt
    
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java
    
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
    
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/SolrWriter.java

Modified: lucene/solr/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/CHANGES.txt?rev=725616&r1=725615&r2=725616&view=diff
==============================================================================
--- lucene/solr/trunk/CHANGES.txt (original)
+++ lucene/solr/trunk/CHANGES.txt Thu Dec 11 00:25:38 2008
@@ -106,7 +106,9 @@
 22. SOLR-781: Distributed search ability to sort field.facet values
     lexicographically.  facet.sort values "true" and "false" are
     also deprecated and replaced with "count" and "lex".
-    (Lars Kotthoff via yonik
+    (Lars Kotthoff via yonik)
+
+23. SOLR-886: DataImportHandler should rollback when an import fails or it is 
aborted (shalin)
 
 Optimizations
 ----------------------

Modified: 
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java?rev=725616&r1=725615&r2=725616&view=diff
==============================================================================
--- 
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java
 (original)
+++ 
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java
 Thu Dec 11 00:25:38 2008
@@ -319,6 +319,7 @@
         cumulativeStatistics.add(docBuilder.importStatistics);
     } catch (Throwable t) {
       LOG.error("Full Import failed", t);
+      docBuilder.rollback();
     } finally {
       setStatus(Status.IDLE);
       config.clearCaches();
@@ -342,6 +343,7 @@
         cumulativeStatistics.add(docBuilder.importStatistics);
     } catch (Throwable t) {
       LOG.error("Delta Import Failed", t);
+      docBuilder.rollback();
     } finally {
       setStatus(Status.IDLE);
       config.clearCaches();

Modified: 
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java?rev=725616&r1=725615&r2=725616&view=diff
==============================================================================
--- 
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
 (original)
+++ 
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
 Thu Dec 11 00:25:38 2008
@@ -139,8 +139,8 @@
     if (stop.get()) {
       if (DataImporter.ABORT_CMD.equals(requestParameters.command)) {
         // Dont commit if aborted using command=abort
-        statusMessages.put("Aborted", DataImporter.DATE_TIME_FORMAT
-                .format(new Date()));
+        statusMessages.put("Aborted", DataImporter.DATE_TIME_FORMAT.format(new 
Date()));
+        rollback();
       } else if (requestParameters.commit) {
         // Debug mode, commit if commit=true was specified
         commit();
@@ -170,6 +170,12 @@
 
   }
 
+  void rollback() {
+    writer.rollback();
+    statusMessages.put("", "Indexing failed. Rolled back all changes.");
+    addStatusMessage("Rolledback");
+  }
+
   @SuppressWarnings("unchecked")
   private void doFullDump() {
     addStatusMessage("Full Dump Started");

Modified: 
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/SolrWriter.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/SolrWriter.java?rev=725616&r1=725615&r2=725616&view=diff
==============================================================================
--- 
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/SolrWriter.java
 (original)
+++ 
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/SolrWriter.java
 Thu Dec 11 00:25:38 2008
@@ -20,6 +20,7 @@
 import org.apache.solr.update.AddUpdateCommand;
 import org.apache.solr.update.CommitUpdateCommand;
 import org.apache.solr.update.DeleteUpdateCommand;
+import org.apache.solr.update.RollbackUpdateCommand;
 import org.apache.solr.update.processor.UpdateRequestProcessor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -177,8 +178,17 @@
     try {
       CommitUpdateCommand commit = new CommitUpdateCommand(optimize);
       processor.processCommit(commit);
-    } catch (Exception e) {
-      log.error("Exception while solr commit.", e);
+    } catch (Throwable t) {
+      log.error("Exception while solr commit.", t);
+    }
+  }
+
+  public void rollback()  {
+    try {
+      RollbackUpdateCommand rollback = new RollbackUpdateCommand();
+      processor.processRollback(rollback);
+    } catch (Throwable t) {
+      log.error("Exception while solr rollback.", t);
     }
   }
 


Reply via email to