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]>