Repository: incubator-reef
Updated Branches:
  refs/heads/master 2cd1e4bf3 -> 38e1e7051


[REEF-688] Create a DriverRestartCompleted event in Java

This addressed the issue by
  * Changed `DriverRestartCompleted` to an interface that has getters to
    the restart completion time and the flag that indicates a timeout on
    `DriverRestartCompleted`.
  * Add implementation `DriverRestartCompletedImpl`.
  * Change existing `EventHandler<DriverRestartCompleted>`.

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

Pull Request:
  This closes #439


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

Branch: refs/heads/master
Commit: 38e1e705134d4891d5dbb775c6d466a12aef2e7e
Parents: 2cd1e4b
Author: Andrew Chung <[email protected]>
Authored: Fri Aug 28 23:04:01 2015 -0700
Committer: Markus Weimer <[email protected]>
Committed: Mon Aug 31 13:28:16 2015 -0700

----------------------------------------------------------------------
 .../reef/javabridge/generic/JobDriver.java      |  9 ++--
 .../reef/client/DriverRestartConfiguration.java |  2 +-
 .../DriverRestartCompletedHandlers.java         |  2 +-
 .../ServiceDriverRestartCompletedHandlers.java  |  2 +-
 .../driver/restart/DriverRestartCompleted.java  | 44 +++++++++++++++++
 .../restart/DriverRestartCompletedImpl.java     | 50 ++++++++++++++++++++
 .../driver/restart/DriverRestartManager.java    | 10 ++--
 .../runtime/common/DriverRestartCompleted.java  | 28 -----------
 .../DefaultDriverRestartCompletedHandler.java   |  4 +-
 .../evaluator/EvaluatorMessageDispatcher.java   |  2 +-
 10 files changed, 111 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/38e1e705/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/generic/JobDriver.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/generic/JobDriver.java
 
b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/generic/JobDriver.java
index 212918e..aec8aa0 100644
--- 
a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/generic/JobDriver.java
+++ 
b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/generic/JobDriver.java
@@ -28,7 +28,7 @@ import org.apache.reef.driver.restart.DriverRestarted;
 import org.apache.reef.driver.task.*;
 import org.apache.reef.io.network.naming.NameServer;
 import org.apache.reef.javabridge.*;
-import org.apache.reef.runtime.common.DriverRestartCompleted;
+import org.apache.reef.driver.restart.DriverRestartCompleted;
 import org.apache.reef.runtime.common.driver.DriverStatusManager;
 import org.apache.reef.driver.evaluator.EvaluatorProcess;
 import org.apache.reef.tang.annotations.Unit;
@@ -610,10 +610,13 @@ public final class JobDriver {
     @Override
     public void onNext(final DriverRestartCompleted driverRestartCompleted) {
       LOG.log(Level.INFO, "Java DriverRestartCompleted event received at time 
[{0}]. ",
-          driverRestartCompleted.getTimeStamp());
-      try (final LoggingScope ls = 
loggingScopeFactory.driverRestartCompleted(driverRestartCompleted.getTimeStamp()))
 {
+          driverRestartCompleted.getCompletedTime());
+      try (final LoggingScope ls = loggingScopeFactory.driverRestartCompleted(
+          driverRestartCompleted.getCompletedTime().getTimeStamp())) {
         if (JobDriver.this.driverRestartHandler != 0) {
           LOG.log(Level.INFO, "CLR driver restart handler implemented, now 
handle it in CLR.");
+
+          // TODO[REEF-690]: Pass in DriverRestartCompleted object to .NET.
           
NativeInterop.clrSystemDriverRestartCompletedHandlerOnNext(JobDriver.this.driverRestartCompletedHandler);
         } else {
           LOG.log(Level.WARNING, "No CLR driver restart handler implemented, 
done with DriverRestartCompletedHandler.");

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/38e1e705/lang/java/reef-common/src/main/java/org/apache/reef/client/DriverRestartConfiguration.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-common/src/main/java/org/apache/reef/client/DriverRestartConfiguration.java
 
b/lang/java/reef-common/src/main/java/org/apache/reef/client/DriverRestartConfiguration.java
index e0e884f..cda65ab 100644
--- 
a/lang/java/reef-common/src/main/java/org/apache/reef/client/DriverRestartConfiguration.java
+++ 
b/lang/java/reef-common/src/main/java/org/apache/reef/client/DriverRestartConfiguration.java
@@ -26,7 +26,7 @@ import org.apache.reef.driver.context.ActiveContext;
 import org.apache.reef.driver.parameters.*;
 import org.apache.reef.driver.restart.DriverRestarted;
 import org.apache.reef.driver.task.RunningTask;
-import org.apache.reef.runtime.common.DriverRestartCompleted;
+import org.apache.reef.driver.restart.DriverRestartCompleted;
 import org.apache.reef.tang.formats.ConfigurationModule;
 import org.apache.reef.tang.formats.ConfigurationModuleBuilder;
 import org.apache.reef.tang.formats.OptionalImpl;

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/38e1e705/lang/java/reef-common/src/main/java/org/apache/reef/driver/parameters/DriverRestartCompletedHandlers.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-common/src/main/java/org/apache/reef/driver/parameters/DriverRestartCompletedHandlers.java
 
b/lang/java/reef-common/src/main/java/org/apache/reef/driver/parameters/DriverRestartCompletedHandlers.java
index d65d0f5..81bdfd9 100644
--- 
a/lang/java/reef-common/src/main/java/org/apache/reef/driver/parameters/DriverRestartCompletedHandlers.java
+++ 
b/lang/java/reef-common/src/main/java/org/apache/reef/driver/parameters/DriverRestartCompletedHandlers.java
@@ -18,7 +18,7 @@
  */
 package org.apache.reef.driver.parameters;
 
-import org.apache.reef.runtime.common.DriverRestartCompleted;
+import org.apache.reef.driver.restart.DriverRestartCompleted;
 import 
org.apache.reef.runtime.common.driver.defaults.DefaultDriverRestartCompletedHandler;
 import org.apache.reef.tang.annotations.Name;
 import org.apache.reef.tang.annotations.NamedParameter;

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/38e1e705/lang/java/reef-common/src/main/java/org/apache/reef/driver/parameters/ServiceDriverRestartCompletedHandlers.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-common/src/main/java/org/apache/reef/driver/parameters/ServiceDriverRestartCompletedHandlers.java
 
b/lang/java/reef-common/src/main/java/org/apache/reef/driver/parameters/ServiceDriverRestartCompletedHandlers.java
index c2e3063..7fed505 100644
--- 
a/lang/java/reef-common/src/main/java/org/apache/reef/driver/parameters/ServiceDriverRestartCompletedHandlers.java
+++ 
b/lang/java/reef-common/src/main/java/org/apache/reef/driver/parameters/ServiceDriverRestartCompletedHandlers.java
@@ -18,7 +18,7 @@
  */
 package org.apache.reef.driver.parameters;
 
-import org.apache.reef.runtime.common.DriverRestartCompleted;
+import org.apache.reef.driver.restart.DriverRestartCompleted;
 import org.apache.reef.tang.annotations.Name;
 import org.apache.reef.tang.annotations.NamedParameter;
 import org.apache.reef.wake.EventHandler;

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/38e1e705/lang/java/reef-common/src/main/java/org/apache/reef/driver/restart/DriverRestartCompleted.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-common/src/main/java/org/apache/reef/driver/restart/DriverRestartCompleted.java
 
b/lang/java/reef-common/src/main/java/org/apache/reef/driver/restart/DriverRestartCompleted.java
new file mode 100644
index 0000000..cf55873
--- /dev/null
+++ 
b/lang/java/reef-common/src/main/java/org/apache/reef/driver/restart/DriverRestartCompleted.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.reef.driver.restart;
+
+import org.apache.reef.annotations.Provided;
+import org.apache.reef.annotations.Unstable;
+import org.apache.reef.annotations.audience.Public;
+import org.apache.reef.wake.time.Time;
+
+/**
+ * The object used to notify the user that the Driver Restart process has been 
completed.
+ */
+@Public
+@Unstable
+@Provided
+public interface DriverRestartCompleted {
+
+  /**
+   * @return the completed time of Driver restart.
+   */
+  Time getCompletedTime();
+
+  /**
+   * @return True if Driver restart completion was triggered by a timeout. 
False if triggered due to all Evaluators
+   * reporting back.
+   */
+  boolean isTimedOut();
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/38e1e705/lang/java/reef-common/src/main/java/org/apache/reef/driver/restart/DriverRestartCompletedImpl.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-common/src/main/java/org/apache/reef/driver/restart/DriverRestartCompletedImpl.java
 
b/lang/java/reef-common/src/main/java/org/apache/reef/driver/restart/DriverRestartCompletedImpl.java
new file mode 100644
index 0000000..11efbef
--- /dev/null
+++ 
b/lang/java/reef-common/src/main/java/org/apache/reef/driver/restart/DriverRestartCompletedImpl.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.reef.driver.restart;
+
+import org.apache.reef.wake.time.Time;
+
+/**
+ * @see DriverRestartCompleted
+ */
+class DriverRestartCompletedImpl implements DriverRestartCompleted {
+  private final Time completedTime;
+  private final boolean isTimedOut;
+
+  DriverRestartCompletedImpl(final long completedTimeMillis, final boolean 
isTimedOut) {
+    this.completedTime = new Time(completedTimeMillis) { };
+    this.isTimedOut = isTimedOut;
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public Time getCompletedTime() {
+    return completedTime;
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public boolean isTimedOut() {
+    return isTimedOut;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/38e1e705/lang/java/reef-common/src/main/java/org/apache/reef/driver/restart/DriverRestartManager.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-common/src/main/java/org/apache/reef/driver/restart/DriverRestartManager.java
 
b/lang/java/reef-common/src/main/java/org/apache/reef/driver/restart/DriverRestartManager.java
index 3ff1c8f..9de0004 100644
--- 
a/lang/java/reef-common/src/main/java/org/apache/reef/driver/restart/DriverRestartManager.java
+++ 
b/lang/java/reef-common/src/main/java/org/apache/reef/driver/restart/DriverRestartManager.java
@@ -25,7 +25,6 @@ import 
org.apache.reef.driver.parameters.DriverRestartCompletedHandlers;
 import org.apache.reef.driver.parameters.DriverRestartEvaluatorRecoverySeconds;
 import org.apache.reef.driver.parameters.ServiceDriverRestartCompletedHandlers;
 import org.apache.reef.exception.DriverFatalRuntimeException;
-import org.apache.reef.runtime.common.DriverRestartCompleted;
 import org.apache.reef.runtime.common.driver.idle.DriverIdlenessSource;
 import org.apache.reef.runtime.common.driver.idle.IdleMessage;
 import org.apache.reef.tang.annotations.Parameter;
@@ -127,7 +126,7 @@ public final class DriverRestartManager implements 
DriverIdlenessSource {
       restartCompletedTimer.schedule(new TimerTask() {
         @Override
         public void run() {
-          onDriverRestartCompleted();
+          onDriverRestartCompleted(true);
         }
       }, driverRestartEvaluatorRecoverySeconds * 1000L);
     }
@@ -179,7 +178,7 @@ public final class DriverRestartManager implements 
DriverIdlenessSource {
     setEvaluatorReported(evaluatorId);
 
     if (haveAllExpectedEvaluatorsReported()) {
-      onDriverRestartCompleted();
+      onDriverRestartCompleted(false);
     }
 
     return true;
@@ -270,13 +269,14 @@ public final class DriverRestartManager implements 
DriverIdlenessSource {
   /**
    * Sets the driver restart status to be completed if not yet set and 
notifies the restart completed event handlers.
    */
-  private synchronized void onDriverRestartCompleted() {
+  private synchronized void onDriverRestartCompleted(final boolean isTimedOut) 
{
     if (this.state != DriverRestartState.COMPLETED) {
       final Set<String> outstandingEvaluatorIds = 
getOutstandingEvaluatorsAndMarkExpired();
       
driverRuntimeRestartManager.informAboutEvaluatorFailures(outstandingEvaluatorIds);
 
       this.state = DriverRestartState.COMPLETED;
-      final DriverRestartCompleted driverRestartCompleted = new 
DriverRestartCompleted(System.currentTimeMillis());
+      final DriverRestartCompleted driverRestartCompleted = new 
DriverRestartCompletedImpl(
+          System.currentTimeMillis(), isTimedOut);
 
       for (final EventHandler<DriverRestartCompleted> 
serviceRestartCompletedHandler
           : this.serviceDriverRestartCompletedHandlers) {

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/38e1e705/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/DriverRestartCompleted.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/DriverRestartCompleted.java
 
b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/DriverRestartCompleted.java
deleted file mode 100644
index 417f7c3..0000000
--- 
a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/DriverRestartCompleted.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.reef.runtime.common;
-
-import org.apache.reef.wake.time.Time;
-
-public final class DriverRestartCompleted extends Time {
-
-  public DriverRestartCompleted(final long timestamp) {
-    super(timestamp);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/38e1e705/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/defaults/DefaultDriverRestartCompletedHandler.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/defaults/DefaultDriverRestartCompletedHandler.java
 
b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/defaults/DefaultDriverRestartCompletedHandler.java
index b211277..ae5d7e3 100644
--- 
a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/defaults/DefaultDriverRestartCompletedHandler.java
+++ 
b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/defaults/DefaultDriverRestartCompletedHandler.java
@@ -18,7 +18,7 @@
  */
 package org.apache.reef.runtime.common.driver.defaults;
 
-import org.apache.reef.runtime.common.DriverRestartCompleted;
+import org.apache.reef.driver.restart.DriverRestartCompleted;
 import org.apache.reef.wake.EventHandler;
 
 import javax.inject.Inject;
@@ -38,7 +38,7 @@ public final class DefaultDriverRestartCompletedHandler 
implements EventHandler<
 
   @Override
   public void onNext(final DriverRestartCompleted restartCompleted) {
-    LOG.log(Level.INFO, "Driver restart completed at time [{0}].", 
restartCompleted.getTimeStamp());
+    LOG.log(Level.INFO, "Driver restart completed at time [{0}].", 
restartCompleted.getCompletedTime());
   }
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/38e1e705/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorMessageDispatcher.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorMessageDispatcher.java
 
b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorMessageDispatcher.java
index bc80b9e..16836f4 100644
--- 
a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorMessageDispatcher.java
+++ 
b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/evaluator/EvaluatorMessageDispatcher.java
@@ -27,7 +27,7 @@ import org.apache.reef.driver.evaluator.CompletedEvaluator;
 import org.apache.reef.driver.evaluator.FailedEvaluator;
 import org.apache.reef.driver.parameters.*;
 import org.apache.reef.driver.task.*;
-import org.apache.reef.runtime.common.DriverRestartCompleted;
+import org.apache.reef.driver.restart.DriverRestartCompleted;
 import org.apache.reef.runtime.common.driver.DriverExceptionHandler;
 import org.apache.reef.runtime.common.utils.DispatchingEStage;
 import org.apache.reef.tang.annotations.Parameter;

Reply via email to