Repository: incubator-reef
Updated Branches:
refs/heads/master 02156e86e -> a3cf683a2
[REEF-690] Create a DriverRestartCompleted event in .NET
This addressed the issue by
* Added bridge classes for DriverRestartCompleted.
* Propagate the isTimedOut field from Java to .NET for
`DriverRestartCompleted.`
JIRA:
[REEF-690](https://issues.apache.org/jira/browse/REEF-690)
Pull Request:
This closes #468
Project: http://git-wip-us.apache.org/repos/asf/incubator-reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-reef/commit/a3cf683a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-reef/tree/a3cf683a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-reef/diff/a3cf683a
Branch: refs/heads/master
Commit: a3cf683a2adc257276b1f8cacffdc29bbcb39649
Parents: 02156e8
Author: Andrew Chung <[email protected]>
Authored: Tue Sep 8 10:06:39 2015 -0700
Committer: Markus Weimer <[email protected]>
Committed: Wed Sep 9 13:10:33 2015 -0700
----------------------------------------------------------------------
lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h | 12 ++++
.../DriverRestartCompletedClr2Java.cpp | 68 ++++++++++++++++++++
lang/cs/Org.Apache.REEF.Bridge/InteropUtil.cpp | 6 ++
lang/cs/Org.Apache.REEF.Bridge/InteropUtil.h | 4 ++
.../cs/Org.Apache.REEF.Bridge/JavaClrBridge.cpp | 7 +-
.../Org.Apache.REEF.Bridge.vcxproj | 1 +
.../Org.Apache.REEF.Bridge.vcxproj.filters | 3 +
.../Clr2java/IDriverRestartCompletedClr2Java.cs | 35 ++++++++++
.../Bridge/ClrSystemHandlerWrapper.cs | 4 +-
.../Bridge/Events/DriverRestartCompleted.cs | 17 +++--
.../IDriverRestartCompleted.cs | 8 +++
.../Org.Apache.REEF.Driver.csproj | 1 +
.../DriverRestart/HelloRestartDriver.cs | 3 +-
.../reef/javabridge/DriverRestartedBridge.java | 3 +-
.../apache/reef/javabridge/NativeInterop.java | 5 +-
.../generic/DriverRestartCompletedBridge.java | 48 ++++++++++++++
.../reef/javabridge/generic/JobDriver.java | 4 +-
17 files changed, 215 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a3cf683a/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h
b/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h
index 4e686eb..139cf9d 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h
+++ b/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h
@@ -227,6 +227,18 @@ namespace Org {
virtual array<String^>^
GetExpectedEvaluatorIds();
virtual DateTime
GetStartTime();
};
+
+ public ref class
DriverRestartCompletedClr2Java : public IDriverRestartCompletedClr2Java {
+ jobject
_jobjectDriverRestartCompleted;
+ JavaVM* _jvm;
+ DateTime
_restartCompletedTime;
+ bool _isTimedOut;
+ public:
+
DriverRestartCompletedClr2Java(JNIEnv *env, jobject
jobobjectDriverRestartCompleted);
+ virtual void OnError(String^
message);
+ virtual DateTime
GetCompletedTime();
+ virtual bool IsTimedOut();
+ };
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a3cf683a/lang/cs/Org.Apache.REEF.Bridge/DriverRestartCompletedClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/DriverRestartCompletedClr2Java.cpp
b/lang/cs/Org.Apache.REEF.Bridge/DriverRestartCompletedClr2Java.cpp
new file mode 100644
index 0000000..f462a73
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/DriverRestartCompletedClr2Java.cpp
@@ -0,0 +1,68 @@
+/**
+* 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.
+*/
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+ namespace Apache {
+ namespace REEF {
+ namespace Driver {
+ namespace Bridge {
+ namespace Clr2java {
+ ref class ManagedLog {
+ internal:
+ static BridgeLogger^
LOGGER = BridgeLogger::GetLogger("<C++>");
+ };
+
+
DriverRestartCompletedClr2Java::DriverRestartCompletedClr2Java(JNIEnv *env,
jobject jdriverRestartCompleted) {
+
ManagedLog::LOGGER->LogStart("DriverRestartCompletedClr2Java::DriverRestartCompletedClr2Java");
+ pin_ptr<JavaVM*>
pJavaVm = &_jvm;
+ if
(env->GetJavaVM(pJavaVm) != 0) {
+
ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+ }
+
_jobjectDriverRestartCompleted =
reinterpret_cast<jobject>(env->NewGlobalRef(jdriverRestartCompleted));
+
+ jclass
jclassDriverRestartCompleted =
env->GetObjectClass(_jobjectDriverRestartCompleted);
+ jfieldID jidIsTimedOut
= env->GetFieldID(jclassDriverRestartCompleted, "isTimedOut", "Z");
+
+ jboolean jisTimedOut =
env->GetBooleanField(_jobjectDriverRestartCompleted, jidIsTimedOut);
+ _restartCompletedTime =
System::DateTime::Now;
+ _isTimedOut =
ClrBoolFromJavaBoolean(env, jisTimedOut);
+
+
ManagedLog::LOGGER->LogStop("DriverRestartCompletedClr2Java::DriverRestartCompletedClr2Java");
+ }
+
+ bool
DriverRestartCompletedClr2Java::IsTimedOut() {
+ return _isTimedOut;
+ }
+
+ DateTime
DriverRestartCompletedClr2Java::GetCompletedTime() {
+ return
_restartCompletedTime;
+ }
+
+ void
DriverRestartCompletedClr2Java::OnError(String^ message) {
+
ManagedLog::LOGGER->Log("DriverRestartCompletedClr2Java::OnError");
+ JNIEnv *env =
RetrieveEnv(_jvm);
+
HandleClr2JavaError(env, message, _jobjectDriverRestartCompleted);
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a3cf683a/lang/cs/Org.Apache.REEF.Bridge/InteropUtil.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/InteropUtil.cpp
b/lang/cs/Org.Apache.REEF.Bridge/InteropUtil.cpp
index be24f32..1bbabab 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/InteropUtil.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/InteropUtil.cpp
@@ -58,6 +58,12 @@ String^ ManagedStringFromJavaString (
return nullptr;
}
+bool ClrBoolFromJavaBoolean(
+ JNIEnv * env,
+ jboolean jbool) {
+ return jbool != JNI_FALSE;
+}
+
jstring JavaStringFromManagedString(
JNIEnv *env,
String^ managedString) {
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a3cf683a/lang/cs/Org.Apache.REEF.Bridge/InteropUtil.h
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/InteropUtil.h
b/lang/cs/Org.Apache.REEF.Bridge/InteropUtil.h
index 2d95bcc..16aede6 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/InteropUtil.h
+++ b/lang/cs/Org.Apache.REEF.Bridge/InteropUtil.h
@@ -41,6 +41,10 @@ String^ ManagedStringFromJavaString (
JNIEnv *env,
jstring javaString);
+bool ClrBoolFromJavaBoolean(
+ JNIEnv * env,
+ jboolean jbool);
+
jstring JavaStringFromManagedString(
JNIEnv *env,
String^ managedString);
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a3cf683a/lang/cs/Org.Apache.REEF.Bridge/JavaClrBridge.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/JavaClrBridge.cpp
b/lang/cs/Org.Apache.REEF.Bridge/JavaClrBridge.cpp
index a21a144..a90c44c 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/JavaClrBridge.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/JavaClrBridge.cpp
@@ -495,13 +495,14 @@ JNIEXPORT void JNICALL
Java_org_apache_reef_javabridge_NativeInterop_clrSystemDr
/*
* Class: org_apache_reef_javabridge_NativeInterop
* Method: clrSystemDriverRestartCompletedHandlerOnNext
-* Signature: (J)V
+* Signature:
(JLorg/apache/reef/javabridge/generic/DriverRestartCompletedBridge;)V
*/
JNIEXPORT void JNICALL
Java_org_apache_reef_javabridge_NativeInterop_clrSystemDriverRestartCompletedHandlerOnNext
-(JNIEnv * env, jclass cls, jlong handler) {
+(JNIEnv * env, jclass cls , jlong handler, jobject jdriverRestartCompleted) {
ManagedLog::LOGGER->Log("+Java_org_apache_reef_javabridge_NativeInterop_clrSystemDriverRestartCompletedHandlerOnNext");
+ DriverRestartCompletedClr2Java^ driverRestartCompletedBridge = gcnew
DriverRestartCompletedClr2Java(env, jdriverRestartCompleted);
try {
-
ClrSystemHandlerWrapper::Call_ClrSystemDriverRestartCompleted_OnNext(handler);
+
ClrSystemHandlerWrapper::Call_ClrSystemDriverRestartCompleted_OnNext(handler,
driverRestartCompletedBridge);
}
catch (System::Exception^ ex) {
String^ errorMessage = "Exception in
Call_ClrSystemDriverRestartRunningTask_OnNext";
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a3cf683a/lang/cs/Org.Apache.REEF.Bridge/Org.Apache.REEF.Bridge.vcxproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/Org.Apache.REEF.Bridge.vcxproj
b/lang/cs/Org.Apache.REEF.Bridge/Org.Apache.REEF.Bridge.vcxproj
index 9098e64..eaaaaf9 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/Org.Apache.REEF.Bridge.vcxproj
+++ b/lang/cs/Org.Apache.REEF.Bridge/Org.Apache.REEF.Bridge.vcxproj
@@ -135,6 +135,7 @@ under the License.
<ClCompile Include="CompletedTaskClr2Java.cpp" />
<ClCompile Include="ContextMessageClr2Java.cpp" />
<ClCompile Include="DriverRestartedClr2Java.cpp" />
+ <ClCompile Include="DriverRestartCompletedClr2Java.cpp" />
<ClCompile Include="EvaluatorRequestorClr2Java.cpp" />
<ClCompile Include="FailedContextClr2Java.cpp" />
<ClCompile Include="FailedEvaluatorClr2Java.cpp" />
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a3cf683a/lang/cs/Org.Apache.REEF.Bridge/Org.Apache.REEF.Bridge.vcxproj.filters
----------------------------------------------------------------------
diff --git
a/lang/cs/Org.Apache.REEF.Bridge/Org.Apache.REEF.Bridge.vcxproj.filters
b/lang/cs/Org.Apache.REEF.Bridge/Org.Apache.REEF.Bridge.vcxproj.filters
index 4d3a847..767c497 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/Org.Apache.REEF.Bridge.vcxproj.filters
+++ b/lang/cs/Org.Apache.REEF.Bridge/Org.Apache.REEF.Bridge.vcxproj.filters
@@ -116,6 +116,9 @@
<ClCompile Include="DriverRestartedClr2Java.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="DriverRestartCompletedClr2Java.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a3cf683a/lang/cs/Org.Apache.REEF.Driver/Bridge/Clr2java/IDriverRestartCompletedClr2Java.cs
----------------------------------------------------------------------
diff --git
a/lang/cs/Org.Apache.REEF.Driver/Bridge/Clr2java/IDriverRestartCompletedClr2Java.cs
b/lang/cs/Org.Apache.REEF.Driver/Bridge/Clr2java/IDriverRestartCompletedClr2Java.cs
new file mode 100644
index 0000000..223fde6
--- /dev/null
+++
b/lang/cs/Org.Apache.REEF.Driver/Bridge/Clr2java/IDriverRestartCompletedClr2Java.cs
@@ -0,0 +1,35 @@
+/**
+ * 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.
+ */
+using System;
+
+namespace Org.Apache.REEF.Driver.Bridge.Clr2java
+{
+ public interface IDriverRestartCompletedClr2Java
+ {
+ /// <summary>
+ /// Completed time of the restart.
+ /// </summary>
+ DateTime GetCompletedTime();
+
+ /// <summary>
+ /// Returns True if restart completed fired on timeout.
+ /// </summary>
+ bool IsTimedOut();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a3cf683a/lang/cs/Org.Apache.REEF.Driver/Bridge/ClrSystemHandlerWrapper.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/ClrSystemHandlerWrapper.cs
b/lang/cs/Org.Apache.REEF.Driver/Bridge/ClrSystemHandlerWrapper.cs
index b7f9f2e..5f7b61b 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Bridge/ClrSystemHandlerWrapper.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/ClrSystemHandlerWrapper.cs
@@ -210,13 +210,13 @@ namespace Org.Apache.REEF.Driver.Bridge
}
}
- public static void Call_ClrSystemDriverRestartCompleted_OnNext(ulong
handle)
+ public static void Call_ClrSystemDriverRestartCompleted_OnNext(ulong
handle, IDriverRestartCompletedClr2Java clr2Java)
{
using
(LOGGER.LogFunction("ClrSystemHandlerWrapper::Call_ClrSystemDriverRestartCompleted_OnNext"))
{
GCHandle gc = GCHandle.FromIntPtr((IntPtr)handle);
ClrSystemHandler<IDriverRestartCompleted> obj =
(ClrSystemHandler<IDriverRestartCompleted>)gc.Target;
- obj.OnNext(new DriverRestartCompleted(DateTime.Now));
+ obj.OnNext(new DriverRestartCompleted(clr2Java));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a3cf683a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/DriverRestartCompleted.cs
----------------------------------------------------------------------
diff --git
a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/DriverRestartCompleted.cs
b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/DriverRestartCompleted.cs
index e1db1f3..9382b64 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/DriverRestartCompleted.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/DriverRestartCompleted.cs
@@ -18,24 +18,33 @@
*/
using System;
+using Org.Apache.REEF.Driver.Bridge.Clr2java;
+using Org.Apache.REEF.Driver.Defaults;
namespace Org.Apache.REEF.Driver.Bridge.Events
{
/// <summary>
- /// Implementation of IDriverStarted.
+ /// Implementation of IDriverRestartCompleted.
/// </summary>
internal sealed class DriverRestartCompleted : IDriverRestartCompleted
{
private readonly DateTime _completedTime;
+ private readonly bool _isTimedOut;
- internal DriverRestartCompleted(DateTime completedTime)
+ internal DriverRestartCompleted(IDriverRestartCompletedClr2Java
driverRestartCompletedClr2Java)
{
- this._completedTime = completedTime;
+ _completedTime = driverRestartCompletedClr2Java.GetCompletedTime();
+ _isTimedOut = driverRestartCompletedClr2Java.IsTimedOut();
}
public DateTime CompletedTime
{
- get { return this._completedTime; }
+ get { return _completedTime; }
+ }
+
+ public bool IsTimedOut
+ {
+ get { return _isTimedOut; }
}
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a3cf683a/lang/cs/Org.Apache.REEF.Driver/IDriverRestartCompleted.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/IDriverRestartCompleted.cs
b/lang/cs/Org.Apache.REEF.Driver/IDriverRestartCompleted.cs
index a8acd3f..41bd895 100644
--- a/lang/cs/Org.Apache.REEF.Driver/IDriverRestartCompleted.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/IDriverRestartCompleted.cs
@@ -26,6 +26,14 @@ namespace Org.Apache.REEF.Driver
/// </summary>
public interface IDriverRestartCompleted
{
+ /// <summary>
+ /// The completed time of driver restart process.
+ /// </summary>
DateTime CompletedTime { get; }
+
+ /// <summary>
+ /// Whether the driver restart completed event fired due to a timeout.
+ /// </summary>
+ bool IsTimedOut { get; }
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a3cf683a/lang/cs/Org.Apache.REEF.Driver/Org.Apache.REEF.Driver.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Org.Apache.REEF.Driver.csproj
b/lang/cs/Org.Apache.REEF.Driver/Org.Apache.REEF.Driver.csproj
index 6fc2426..8a7af98 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Org.Apache.REEF.Driver.csproj
+++ b/lang/cs/Org.Apache.REEF.Driver/Org.Apache.REEF.Driver.csproj
@@ -47,6 +47,7 @@ under the License.
<Compile Include="Bridge\Clr2java\ICompletedEvaluatorClr2Java.cs" />
<Compile Include="Bridge\Clr2java\ICompletedTaskClr2Java.cs" />
<Compile Include="Bridge\Clr2java\IContextMessageClr2Java.cs" />
+ <Compile Include="Bridge\Clr2java\IDriverRestartCompletedClr2Java.cs" />
<Compile Include="Bridge\Clr2java\IDriverRestartedClr2Java.cs" />
<Compile Include="Bridge\Clr2java\IEvaluatorRequestorClr2Java.cs" />
<Compile Include="Bridge\Clr2java\IFailedContextClr2Java.cs" />
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a3cf683a/lang/cs/Org.Apache.REEF.Examples/DriverRestart/HelloRestartDriver.cs
----------------------------------------------------------------------
diff --git
a/lang/cs/Org.Apache.REEF.Examples/DriverRestart/HelloRestartDriver.cs
b/lang/cs/Org.Apache.REEF.Examples/DriverRestart/HelloRestartDriver.cs
index ed3a59b..00240f1 100644
--- a/lang/cs/Org.Apache.REEF.Examples/DriverRestart/HelloRestartDriver.cs
+++ b/lang/cs/Org.Apache.REEF.Examples/DriverRestart/HelloRestartDriver.cs
@@ -141,7 +141,8 @@ namespace Org.Apache.REEF.Examples.DriverRestart
public void OnNext(IDriverRestartCompleted value)
{
- Logger.Log(Level.Info, "Driver restart has completed.");
+ var timedOutStr = (value.IsTimedOut ? " due to timeout" :
string.Empty);
+ Logger.Log(Level.Info, "Driver restart has completed" +
timedOutStr + ".");
}
public void OnNext(ICompletedTask value)
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a3cf683a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/DriverRestartedBridge.java
----------------------------------------------------------------------
diff --git
a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/DriverRestartedBridge.java
b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/DriverRestartedBridge.java
index 54b08c0..3c827ee 100644
---
a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/DriverRestartedBridge.java
+++
b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/DriverRestartedBridge.java
@@ -25,12 +25,13 @@ import org.apache.reef.annotations.audience.Private;
import java.util.Set;
/**
- * Created by anchung on 9/1/2015.
+ * The Java-CLR bridge object for {@link
org.apache.reef.driver.restart.DriverRestarted} events.
*/
@Private
@DriverSide
@Unstable
public final class DriverRestartedBridge extends NativeBridge {
+ // Used by bridge to extract field. Please take this into consideration when
changing the name of the field.
private final String[] expectedEvaluatorIds;
public DriverRestartedBridge(final Set<String> expectedEvaluatorIds) {
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a3cf683a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/NativeInterop.java
----------------------------------------------------------------------
diff --git
a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/NativeInterop.java
b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/NativeInterop.java
index a622dda..3b08103 100644
---
a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/NativeInterop.java
+++
b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/NativeInterop.java
@@ -18,6 +18,8 @@
*/
package org.apache.reef.javabridge;
+import org.apache.reef.javabridge.generic.DriverRestartCompletedBridge;
+
import java.util.HashMap;
public final class NativeInterop {
@@ -164,7 +166,8 @@ public final class NativeInterop {
);
public static native void clrSystemDriverRestartCompletedHandlerOnNext(
- final long handle
+ final long handle,
+ final DriverRestartCompletedBridge driverRestartCompletedBridge
);
public static native void clrSystemDriverRestartFailedEvaluatorHandlerOnNext(
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a3cf683a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/generic/DriverRestartCompletedBridge.java
----------------------------------------------------------------------
diff --git
a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/generic/DriverRestartCompletedBridge.java
b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/generic/DriverRestartCompletedBridge.java
new file mode 100644
index 0000000..2d03735
--- /dev/null
+++
b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/generic/DriverRestartCompletedBridge.java
@@ -0,0 +1,48 @@
+/*
+ * 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.javabridge.generic;
+
+import org.apache.reef.annotations.Unstable;
+import org.apache.reef.annotations.audience.DriverSide;
+import org.apache.reef.annotations.audience.Private;
+import org.apache.reef.driver.restart.DriverRestartCompleted;
+import org.apache.reef.javabridge.NativeBridge;
+
+/**
+ * The Java-CLR bridge object for {@link DriverRestartCompleted} events.
+ */
+@Private
+@DriverSide
+@Unstable
+public final class DriverRestartCompletedBridge extends NativeBridge {
+ // Used by bridge to extract field. Please take this into consideration when
changing the name of the field.
+ private boolean isTimedOut;
+
+ DriverRestartCompletedBridge(final DriverRestartCompleted
driverRestartCompleted) {
+ this.isTimedOut = driverRestartCompleted.isTimedOut();
+ }
+
+ public boolean isTimedOut() {
+ return isTimedOut;
+ }
+
+ @Override
+ public void close() throws Exception {
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a3cf683a/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 1b37474..9abdee6 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
@@ -650,8 +650,8 @@ public final class JobDriver {
if (JobDriver.this.driverRestartCompletedHandler != 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);
+ NativeInterop.clrSystemDriverRestartCompletedHandlerOnNext(
+ JobDriver.this.driverRestartCompletedHandler, new
DriverRestartCompletedBridge(driverRestartCompleted));
} else {
LOG.log(Level.WARNING, "No CLR driver restart handler implemented,
done with DriverRestartCompletedHandler.");
}