You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by mb...@apache.org on 2018/09/12 17:36:38 UTC
[4/9] asterixdb git commit: [NO ISSUE][STO] Report batch operation
failure before exiting
[NO ISSUE][STO] Report batch operation failure before exiting
- user model changes: no
- storage format changes: no
- interface changes: yes
Details:
- In certain cases, caller of a batch operation call are
interested in failure events.
- In those cases, we used to report failure after exiting
the components but with this change, failure reporting
happens before the exit.
Change-Id: I0c22b6bddfe8f12ef8e3c59dae0b0c585137a126
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2956
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Murtadha Hubail <mh...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/bfe9b024
Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/bfe9b024
Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/bfe9b024
Branch: refs/heads/master
Commit: bfe9b0244eec13b5290bf47c04aea7688123f2ab
Parents: e7d8bc5
Author: Abdullah Alamoudi <ba...@gmail.com>
Authored: Wed Sep 5 15:48:49 2018 -0700
Committer: abdullah alamoudi <ba...@gmail.com>
Committed: Thu Sep 6 12:49:34 2018 -0700
----------------------------------------------------------------------
.../active/ActiveSourceOperatorNodePushable.java | 6 ------
.../java/org/apache/asterix/active/IActiveRuntime.java | 6 ------
.../LSMPrimaryUpsertOperatorNodePushable.java | 13 +++++++------
.../am/lsm/common/api/IFrameTupleProcessor.java | 7 +++++++
.../storage/am/lsm/common/impls/LSMHarness.java | 3 +++
5 files changed, 17 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bfe9b024/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/ActiveSourceOperatorNodePushable.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/ActiveSourceOperatorNodePushable.java b/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/ActiveSourceOperatorNodePushable.java
index b1a1fcc..453ffa0 100644
--- a/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/ActiveSourceOperatorNodePushable.java
+++ b/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/ActiveSourceOperatorNodePushable.java
@@ -26,7 +26,6 @@ import org.apache.asterix.common.api.INcApplicationContext;
import org.apache.hyracks.api.comm.IFrameWriter;
import org.apache.hyracks.api.context.IHyracksTaskContext;
import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.api.job.JobId;
import org.apache.hyracks.dataflow.std.base.AbstractUnaryOutputSourceOperatorNodePushable;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
@@ -135,9 +134,4 @@ public abstract class ActiveSourceOperatorNodePushable extends AbstractUnaryOutp
public final IFrameWriter getInputFrameWriter(int index) {
return null;
}
-
- @Override
- public JobId getJobId() {
- return ctx.getJobletContext().getJobId();
- }
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bfe9b024/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/IActiveRuntime.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/IActiveRuntime.java b/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/IActiveRuntime.java
index 2da7193..a52f01e 100644
--- a/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/IActiveRuntime.java
+++ b/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/IActiveRuntime.java
@@ -21,7 +21,6 @@ package org.apache.asterix.active;
import java.util.concurrent.TimeUnit;
import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.api.job.JobId;
public interface IActiveRuntime {
@@ -44,11 +43,6 @@ public interface IActiveRuntime {
void stop(long timeout, TimeUnit unit) throws HyracksDataException, InterruptedException;
/**
- * @return the job id associated with this active runtime
- */
- JobId getJobId();
-
- /**
* @return the runtime stats for monitoring purposes
*/
default String getStats() {
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bfe9b024/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java
index ba8074f..b855981 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java
@@ -206,6 +206,12 @@ public class LSMPrimaryUpsertOperatorNodePushable extends LSMIndexInsertUpdateDe
public void finish() throws HyracksDataException {
lsmAccessor.getCtx().setOperation(IndexOperation.UPSERT);
}
+
+ @Override
+ public void fail(Throwable th) {
+ // We must fail before we exit the components
+ frameOpCallback.fail(th);
+ }
};
tracer = ctx.getJobletContext().getServiceContext().getTracer();
traceCategory = tracer.getRegistry().get(TraceUtils.LATENCY);
@@ -314,12 +320,7 @@ public class LSMPrimaryUpsertOperatorNodePushable extends LSMIndexInsertUpdateDe
public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
accessor.reset(buffer);
int itemCount = accessor.getTupleCount();
- try {
- lsmAccessor.batchOperate(accessor, tuple, processor, frameOpCallback);
- } catch (Throwable th) {// NOSONAR: Must notify of all failures
- frameOpCallback.fail(th);
- throw th;
- }
+ lsmAccessor.batchOperate(accessor, tuple, processor, frameOpCallback);
if (itemCount > 0) {
lastRecordInTimeStamp = System.currentTimeMillis();
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bfe9b024/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/IFrameTupleProcessor.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/IFrameTupleProcessor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/IFrameTupleProcessor.java
index 3fbe6cd..b6192c1 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/IFrameTupleProcessor.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/IFrameTupleProcessor.java
@@ -43,4 +43,11 @@ public interface IFrameTupleProcessor {
* Called once per batch before ending the batch process
*/
void finish() throws HyracksDataException;
+
+ /**
+ * Called when a failure is encountered processing a frame
+ *
+ * @param th
+ */
+ void fail(Throwable th);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bfe9b024/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
----------------------------------------------------------------------
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 aa7be86..e9f6f20 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
@@ -700,6 +700,9 @@ public class LSMHarness implements ILSMHarness {
try {
processFrame(accessor, tuple, processor);
frameOpCallback.frameCompleted();
+ } catch (Throwable th) {
+ processor.fail(th);
+ throw th;
} finally {
processor.finish();
}