Repository: reef
Updated Branches:
  refs/heads/master 66d3d6963 -> 07e654977


[REEF-1454] onResourceLaunch should not throw exception if evaluator failed

Evaluator can fail before task is submitted; there will be a FailedEvaluator
event produced which can be handled properly, and no need to throw exception
to crash process.

JIRA:
  [REEF-1454](https://issues.apache.org/jira/browse/REEF-1454)

Pull request:
  This closes #1045


Project: http://git-wip-us.apache.org/repos/asf/reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/reef/commit/07e65497
Tree: http://git-wip-us.apache.org/repos/asf/reef/tree/07e65497
Diff: http://git-wip-us.apache.org/repos/asf/reef/diff/07e65497

Branch: refs/heads/master
Commit: 07e654977a88b723806da70663e818a59a00a68f
Parents: 66d3d69
Author: Mariia Mykhailova <[email protected]>
Authored: Tue Jun 14 16:39:56 2016 -0700
Committer: Markus Weimer <[email protected]>
Committed: Wed Jun 15 14:57:54 2016 -0700

----------------------------------------------------------------------
 .../reef/runtime/common/driver/evaluator/EvaluatorManager.java   | 3 +++
 .../runtime/common/driver/evaluator/EvaluatorStatusManager.java  | 4 ++++
 2 files changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/reef/blob/07e65497/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorManager.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorManager.java
 
b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorManager.java
index a8bd61a..c461a5b 100644
--- 
a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorManager.java
+++ 
b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorManager.java
@@ -487,6 +487,9 @@ public final class EvaluatorManager implements 
Identifiable, AutoCloseable {
       if (this.stateManager.isAllocated()) {
         this.stateManager.setSubmitted();
         this.resourceLaunchHandler.onNext(resourceLaunchEvent);
+      } else if (this.stateManager.isFailedOrKilled()) {
+        LOG.log(Level.WARNING, "Evaluator manager expected" + 
EvaluatorState.ALLOCATED +
+            " state but instead is in state " + this.stateManager);
       } else {
         throw new RuntimeException("Evaluator manager expected " + 
EvaluatorState.ALLOCATED +
             " state but instead is in state " + this.stateManager);

http://git-wip-us.apache.org/repos/asf/reef/blob/07e65497/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorStatusManager.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorStatusManager.java
 
b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorStatusManager.java
index 14e89b0..5d5d1f3 100644
--- 
a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorStatusManager.java
+++ 
b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorStatusManager.java
@@ -147,6 +147,10 @@ final class EvaluatorStatusManager {
     return EvaluatorState.ALLOCATED == this.state;
   }
 
+  synchronized boolean isFailedOrKilled() {
+    return EvaluatorState.FAILED == this.state || EvaluatorState.KILLED == 
this.state;
+  }
+
   @Override
   public synchronized String toString() {
     return this.state.toString();

Reply via email to