Adding some rollback code.

Project: http://git-wip-us.apache.org/repos/asf/incubator-blur/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-blur/commit/0b037473
Tree: http://git-wip-us.apache.org/repos/asf/incubator-blur/tree/0b037473
Diff: http://git-wip-us.apache.org/repos/asf/incubator-blur/diff/0b037473

Branch: refs/heads/master
Commit: 0b0374732f7a64d631d05c7bb4b5211d5e4779ba
Parents: 9bbcff0
Author: Aaron McCurry <[email protected]>
Authored: Mon Jan 6 15:41:03 2014 -0500
Committer: Aaron McCurry <[email protected]>
Committed: Mon Jan 6 15:42:18 2014 -0500

----------------------------------------------------------------------
 .../apache/blur/manager/writer/BlurIndexSimpleWriter.java   | 7 +++++--
 .../org/apache/blur/manager/writer/MutatableAction.java     | 9 ++++++---
 2 files changed, 11 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/0b037473/blur-core/src/main/java/org/apache/blur/manager/writer/BlurIndexSimpleWriter.java
----------------------------------------------------------------------
diff --git 
a/blur-core/src/main/java/org/apache/blur/manager/writer/BlurIndexSimpleWriter.java
 
b/blur-core/src/main/java/org/apache/blur/manager/writer/BlurIndexSimpleWriter.java
index d56df25..7fccd46 100644
--- 
a/blur-core/src/main/java/org/apache/blur/manager/writer/BlurIndexSimpleWriter.java
+++ 
b/blur-core/src/main/java/org/apache/blur/manager/writer/BlurIndexSimpleWriter.java
@@ -282,11 +282,14 @@ public class BlurIndexSimpleWriter extends BlurIndex {
   @Override
   public void process(MutatableAction mutatableAction) throws IOException {
     _writeLock.lock();
+    waitUntilNotNull(_writer);
+    BlurIndexWriter writer = _writer.get();
     try {
-      waitUntilNotNull(_writer);
-      BlurIndexWriter writer = _writer.get();
       mutatableAction.performMutate(_indexReader.get(), writer);
       commit();
+    } catch (Exception e) {
+      writer.rollback();
+      throw new IOException("Unknown error during mutation", e);
     } finally {
       _writeLock.unlock();
     }

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/0b037473/blur-core/src/main/java/org/apache/blur/manager/writer/MutatableAction.java
----------------------------------------------------------------------
diff --git 
a/blur-core/src/main/java/org/apache/blur/manager/writer/MutatableAction.java 
b/blur-core/src/main/java/org/apache/blur/manager/writer/MutatableAction.java
index ccb1fa6..3bc8c29 100644
--- 
a/blur-core/src/main/java/org/apache/blur/manager/writer/MutatableAction.java
+++ 
b/blur-core/src/main/java/org/apache/blur/manager/writer/MutatableAction.java
@@ -359,10 +359,13 @@ public class MutatableAction {
   }
 
   void performMutate(IndexReader reader, IndexWriter writer) throws 
IOException {
-    for (InternalAction internalAction : _actions) {
-      internalAction.performAction(reader, writer);
+    try {
+      for (InternalAction internalAction : _actions) {
+        internalAction.performAction(reader, writer);
+      }
+    } finally {
+      _actions.clear();
     }
-    _actions.clear();
   }
 
   public static Term createRowId(String id) {

Reply via email to