Murtadha Hubail has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/2083

Change subject: [NO ISSUE][STO] Ensure IFrameTupleProcessor Finish is Called
......................................................................

[NO ISSUE][STO] Ensure IFrameTupleProcessor Finish is Called

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
Currently when an exception is encountered while processing the frame
in LSMHarness, IFrameTupleProcessor finish is not called which results
in "Operation already has access to components of index" exception.

Change-Id: I5f4188fa3de3c91f5f6aae95716db016a315ddd6
---
M 
hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
1 file changed, 18 insertions(+), 12 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/83/2083/1

diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
index c8be9b9..831cfff 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
@@ -643,9 +643,9 @@
         exitComponents(ctx, LSMOperationType.REPLICATE, null, false);
     }
 
-    protected void 
validateOperationEnterComponentsState(ILSMIndexOperationContext ctx) throws 
HyracksDataException {
+    protected void 
validateOperationEnterComponentsState(ILSMIndexOperationContext ctx) {
         if (ctx.isAccessingComponents()) {
-            throw new HyracksDataException("Opeartion already has access to 
components of index " + lsmIndex);
+            throw new IllegalStateException("Operation already has access to 
components of index " + lsmIndex);
         }
     }
 
@@ -684,17 +684,12 @@
         processor.start();
         enter(ctx);
         try {
-            int tupleCount = accessor.getTupleCount();
-            int i = 0;
-            while (i < tupleCount) {
-                tuple.reset(accessor, i);
-                processor.process(tuple, i);
-                i++;
+            try {
+                processFrame(accessor, tuple, processor);
+                frameOpCallback.frameCompleted();
+            } finally {
+                processor.finish();
             }
-            frameOpCallback.frameCompleted();
-            processor.finish();
-        } catch (Exception e) {
-            throw HyracksDataException.create(e);
         } finally {
             exit(ctx);
         }
@@ -853,6 +848,17 @@
         return false;
     }
 
+    private static void processFrame(FrameTupleAccessor accessor, 
FrameTupleReference tuple,
+            IFrameTupleProcessor processor) throws HyracksDataException {
+        int tupleCount = accessor.getTupleCount();
+        int i = 0;
+        while (i < tupleCount) {
+            tuple.reset(accessor, i);
+            processor.process(tuple, i);
+            i++;
+        }
+    }
+
     @Override
     public String toString() {
         return getClass().getSimpleName() + ":" + lsmIndex;

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2083
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5f4188fa3de3c91f5f6aae95716db016a315ddd6
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <[email protected]>

Reply via email to