Repository: incubator-reef Updated Branches: refs/heads/master f3fbffb4f -> 9b1925d16
[REEF-653] Remove usage of get/setIsFromPreviousDriver() This removes `get/setIsFromPreviousDriver()` and uses the state in `DriverRestartManager` instead. JIRA: [REEF-653](https://issues.apache.org/jira/browse/REEF-653) Pull Request: This closes #434 Project: http://git-wip-us.apache.org/repos/asf/incubator-reef/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-reef/commit/9b1925d1 Tree: http://git-wip-us.apache.org/repos/asf/incubator-reef/tree/9b1925d1 Diff: http://git-wip-us.apache.org/repos/asf/incubator-reef/diff/9b1925d1 Branch: refs/heads/master Commit: 9b1925d16d3d1f9ca80231fb63292ab2b1de6a9a Parents: f3fbffb Author: Andrew Chung <[email protected]> Authored: Fri Aug 28 10:55:32 2015 -0700 Committer: Markus Weimer <[email protected]> Committed: Fri Aug 28 13:27:24 2015 -0700 ---------------------------------------------------------------------- .../reef/driver/restart/EvaluatorRestartState.java | 13 +++++++++++++ .../driver/evaluator/EvaluatorManagerFactory.java | 14 -------------- .../driver/resourcemanager/ResourceStatusEvent.java | 5 ----- .../resourcemanager/ResourceStatusEventImpl.java | 16 ---------------- .../resourcemanager/ResourceStatusHandler.java | 11 +++++++++-- .../driver/YarnDriverRuntimeRestartManager.java | 1 - 6 files changed, 22 insertions(+), 38 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/9b1925d1/lang/java/reef-common/src/main/java/org/apache/reef/driver/restart/EvaluatorRestartState.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-common/src/main/java/org/apache/reef/driver/restart/EvaluatorRestartState.java b/lang/java/reef-common/src/main/java/org/apache/reef/driver/restart/EvaluatorRestartState.java index a87052b..cf14b20 100644 --- a/lang/java/reef-common/src/main/java/org/apache/reef/driver/restart/EvaluatorRestartState.java +++ b/lang/java/reef-common/src/main/java/org/apache/reef/driver/restart/EvaluatorRestartState.java @@ -121,4 +121,17 @@ public enum EvaluatorRestartState { return false; } } + + /** + * @return true if the evaluator has failed on driver restart or has been expired. + */ + public boolean isFailedOrExpired() { + switch(this) { + case FAILED: + case EXPIRED: + return true; + default: + return false; + } + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/9b1925d1/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorManagerFactory.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorManagerFactory.java b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorManagerFactory.java index 4f49fe9..12a6455 100644 --- a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorManagerFactory.java +++ b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorManagerFactory.java @@ -131,20 +131,6 @@ public final class EvaluatorManagerFactory { * @param resourceStatusEvent * @return an EvaluatorManager for the user to call fail on. */ - public EvaluatorManager createForEvaluatorFailedDuringDriverRestart(final ResourceStatusEvent resourceStatusEvent) { - if (!resourceStatusEvent.getIsFromPreviousDriver().get()) { - throw new RuntimeException("Invalid resourceStatusEvent, must be status for resource from previous Driver."); - } - return getNewEvaluatorManagerInstance(resourceStatusEvent.getIdentifier(), - new EvaluatorDescriptorImpl(null, 128, 1, processFactory.newEvaluatorProcess())); - } - - /** - * Instantiates a new EvaluatorManager for a failed evaluator during driver restart. - * Does not fire an EvaluatorAllocatedEvent. - * @param resourceStatusEvent - * @return an EvaluatorManager for the user to call fail on. - */ public EvaluatorManager getNewEvaluatorManagerForEvaluatorFailedDuringDriverRestart( final ResourceStatusEvent resourceStatusEvent) { return getNewEvaluatorManagerInstance(resourceStatusEvent.getIdentifier(), http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/9b1925d1/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/resourcemanager/ResourceStatusEvent.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/resourcemanager/ResourceStatusEvent.java b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/resourcemanager/ResourceStatusEvent.java index 4991b28..9e66e1b 100644 --- a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/resourcemanager/ResourceStatusEvent.java +++ b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/resourcemanager/ResourceStatusEvent.java @@ -51,9 +51,4 @@ public interface ResourceStatusEvent { * @return Exit code of the resource, if it has exited */ Optional<Integer> getExitCode(); - - /** - * @return If true, this resource is from a previous Driver (the Driver was restarted) - */ - Optional<Boolean> getIsFromPreviousDriver(); } http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/9b1925d1/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/resourcemanager/ResourceStatusEventImpl.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/resourcemanager/ResourceStatusEventImpl.java b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/resourcemanager/ResourceStatusEventImpl.java index a5e3229..5db541c 100644 --- a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/resourcemanager/ResourceStatusEventImpl.java +++ b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/resourcemanager/ResourceStatusEventImpl.java @@ -31,14 +31,12 @@ public final class ResourceStatusEventImpl implements ResourceStatusEvent { private final ReefServiceProtos.State state; private final Optional<String> diagnostics; private final Optional<Integer> exitCode; - private final Optional<Boolean> isFromPreviousDriver; private ResourceStatusEventImpl(final Builder builder) { this.identifier = BuilderUtils.notNull(builder.identifier); this.state = BuilderUtils.notNull(builder.state); this.diagnostics = Optional.ofNullable(builder.diagnostics); this.exitCode = Optional.ofNullable(builder.exitCode); - this.isFromPreviousDriver = Optional.ofNullable(builder.isFromPreviousDriver); } @Override @@ -61,11 +59,6 @@ public final class ResourceStatusEventImpl implements ResourceStatusEvent { return exitCode; } - @Override - public Optional<Boolean> getIsFromPreviousDriver() { - return isFromPreviousDriver; - } - public static Builder newBuilder() { return new Builder(); } @@ -78,7 +71,6 @@ public final class ResourceStatusEventImpl implements ResourceStatusEvent { private ReefServiceProtos.State state; private String diagnostics; private Integer exitCode; - private Boolean isFromPreviousDriver; /** * @see ResourceStatusEvent#getIdentifier() @@ -112,14 +104,6 @@ public final class ResourceStatusEventImpl implements ResourceStatusEvent { return this; } - /** - * @see ResourceStatusEvent#getIsFromPreviousDriver() - */ - public Builder setIsFromPreviousDriver(final boolean isFromPreviousDriver) { - this.isFromPreviousDriver = isFromPreviousDriver; - return this; - } - @Override public ResourceStatusEvent build() { return new ResourceStatusEventImpl(this); http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/9b1925d1/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/resourcemanager/ResourceStatusHandler.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/resourcemanager/ResourceStatusHandler.java b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/resourcemanager/ResourceStatusHandler.java index 3b0a75a..1a2cb38 100644 --- a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/resourcemanager/ResourceStatusHandler.java +++ b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/resourcemanager/ResourceStatusHandler.java @@ -19,9 +19,11 @@ package org.apache.reef.runtime.common.driver.resourcemanager; import org.apache.reef.annotations.audience.Private; +import org.apache.reef.driver.restart.DriverRestartManager; import org.apache.reef.runtime.common.driver.evaluator.EvaluatorManager; import org.apache.reef.runtime.common.driver.evaluator.EvaluatorManagerFactory; import org.apache.reef.runtime.common.driver.evaluator.Evaluators; +import org.apache.reef.tang.InjectionFuture; import org.apache.reef.util.Optional; import org.apache.reef.wake.EventHandler; @@ -36,11 +38,15 @@ public final class ResourceStatusHandler implements EventHandler<ResourceStatusE private final Evaluators evaluators; private final EvaluatorManagerFactory evaluatorManagerFactory; + private final InjectionFuture<DriverRestartManager> driverRestartManager; @Inject - ResourceStatusHandler(final Evaluators evaluators, final EvaluatorManagerFactory evaluatorManagerFactory) { + ResourceStatusHandler(final Evaluators evaluators, + final EvaluatorManagerFactory evaluatorManagerFactory, + final InjectionFuture<DriverRestartManager> driverRestartManager) { this.evaluators = evaluators; this.evaluatorManagerFactory = evaluatorManagerFactory; + this.driverRestartManager = driverRestartManager; } /** @@ -56,7 +62,8 @@ public final class ResourceStatusHandler implements EventHandler<ResourceStatusE if (evaluatorManager.isPresent()) { evaluatorManager.get().onResourceStatusMessage(resourceStatusEvent); } else { - if (resourceStatusEvent.getIsFromPreviousDriver().get()) { + if (driverRestartManager.get().getEvaluatorRestartState(resourceStatusEvent.getIdentifier()) + .isFailedOrExpired()) { final EvaluatorManager previousEvaluatorManager = this.evaluatorManagerFactory .getNewEvaluatorManagerForEvaluatorFailedDuringDriverRestart(resourceStatusEvent); http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/9b1925d1/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/driver/YarnDriverRuntimeRestartManager.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/driver/YarnDriverRuntimeRestartManager.java b/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/driver/YarnDriverRuntimeRestartManager.java index c9a1c34..495a777 100644 --- a/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/driver/YarnDriverRuntimeRestartManager.java +++ b/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/driver/YarnDriverRuntimeRestartManager.java @@ -243,7 +243,6 @@ public final class YarnDriverRuntimeRestartManager implements DriverRuntimeResta .setState(ReefServiceProtos.State.FAILED) .setExitCode(1) .setDiagnostics("Container [" + evaluatorId + "] failed during driver restart process.") - .setIsFromPreviousDriver(true) .build()); } }
