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;