Repository: incubator-reef
Updated Branches:
  refs/heads/master 0e47fff57 -> f2cd5975d


[REEF-689] Restructure handler for DriverRestart in .NET

This addressed the issue by
  * Propagate the expected Evaluator IDs on restart to .NET.
  * Modified bridge code to propagate the Evaluator IDs.

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

Pull Request:
  This closes #458


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

Branch: refs/heads/master
Commit: f2cd5975da55cb3f0c44cc077dec83f4da860361
Parents: 0e47fff
Author: Andrew Chung <[email protected]>
Authored: Tue Sep 1 18:34:53 2015 -0700
Committer: Markus Weimer <[email protected]>
Committed: Fri Sep 4 13:28:08 2015 -0700

----------------------------------------------------------------------
 lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h   | 12 ++++
 .../DriverRestartedClr2Java.cpp                 | 74 ++++++++++++++++++++
 .../cs/Org.Apache.REEF.Bridge/JavaClrBridge.cpp | 10 ++-
 .../Org.Apache.REEF.Bridge.vcxproj              |  1 +
 .../Org.Apache.REEF.Bridge.vcxproj.filters      |  3 +
 .../Bridge/Clr2java/IDriverRestartedClr2Java.cs | 36 ++++++++++
 .../Bridge/ClrSystemHandlerWrapper.cs           |  8 +--
 .../Bridge/DriverBridge.cs                      |  5 +-
 .../Bridge/Events/DriverRestarted.cs            | 16 ++++-
 .../Org.Apache.REEF.Driver/IDriverRestarted.cs  | 10 ++-
 .../Org.Apache.REEF.Driver.csproj               |  1 +
 .../DriverRestart/HelloRestartDriver.cs         |  2 +-
 .../reef/javabridge/DriverRestartedBridge.java  | 47 +++++++++++++
 .../apache/reef/javabridge/NativeInterop.java   |  4 +-
 .../DriverRestartClrHandlersInitializer.java    |  4 +-
 15 files changed, 214 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f2cd5975/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 b1e4491..4e686eb 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h
+++ b/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h
@@ -215,6 +215,18 @@ namespace Org {
                                                  virtual String^ GetId();
                                                  virtual String^ 
GetMessageSourceId();
                                          };
+
+                                         public ref class 
DriverRestartedClr2Java : public IDriverRestartedClr2Java {
+                                                 jobject 
_jobjectDriverRestarted;
+                                                 JavaVM* _jvm;
+                                                 array<String^>^ 
_expectedEvaluatorIds;
+                                                 DateTime _startTime;
+                                         public:
+                                                 
DriverRestartedClr2Java(JNIEnv *env, jobject jobjectDriverRestarted);
+                                                 virtual void OnError(String^ 
message);
+                                                 virtual array<String^>^ 
GetExpectedEvaluatorIds();
+                                                 virtual DateTime 
GetStartTime();
+                                         };
                                  }
                          }
                  }

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f2cd5975/lang/cs/Org.Apache.REEF.Bridge/DriverRestartedClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/DriverRestartedClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/DriverRestartedClr2Java.cpp
new file mode 100644
index 0000000..ea3cf8b
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/DriverRestartedClr2Java.cpp
@@ -0,0 +1,74 @@
+/**
+* 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++>");
+                                               };
+
+                                               
DriverRestartedClr2Java::DriverRestartedClr2Java(JNIEnv *env, jobject 
jdriverRestarted) {
+                                                       
ManagedLog::LOGGER->LogStart("DriverRestartedClr2Java::DriverRestartedClr2Java");
+                                                       pin_ptr<JavaVM*> 
pJavaVm = &_jvm;
+                                                       if 
(env->GetJavaVM(pJavaVm) != 0) {
+                                                               
ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+                                                       }
+                                                       _jobjectDriverRestarted 
= reinterpret_cast<jobject>(env->NewGlobalRef(jdriverRestarted));
+
+                                                       jclass 
jclassDriverRestarted = env->GetObjectClass(_jobjectDriverRestarted);
+                                                       jfieldID 
jidExpectedEvaluatorIds = env->GetFieldID(jclassDriverRestarted, 
"expectedEvaluatorIds", "[Ljava/lang/String;");
+
+                                                       jobjectArray 
jevaluatorIds = 
reinterpret_cast<jobjectArray>(env->NewGlobalRef(env->GetObjectField(_jobjectDriverRestarted,
 jidExpectedEvaluatorIds)));
+                                                       _startTime = 
System::DateTime::Now;
+                                                       int count = 
env->GetArrayLength(jevaluatorIds);
+                                                       _expectedEvaluatorIds = 
gcnew array<String^>(count);
+
+                                                       for (int i = 0; i < 
count; i++) {
+                                                               jstring string 
= (jstring)(*env).GetObjectArrayElement(jevaluatorIds, i);
+                                                               
_expectedEvaluatorIds[i] = ManagedStringFromJavaString(env, string);
+                                                       }
+
+                                                       
ManagedLog::LOGGER->LogStop("DriverRestartedClr2Java::DriverRestartedClr2Java");
+                                               }
+
+                                               array<String^>^ 
DriverRestartedClr2Java::GetExpectedEvaluatorIds() {
+                                                       return 
_expectedEvaluatorIds;
+                                               }
+
+                                               DateTime 
DriverRestartedClr2Java::GetStartTime() {
+                                                       return _startTime;
+                                               }
+
+                                               void 
DriverRestartedClr2Java::OnError(String^ message) {
+                                                       
ManagedLog::LOGGER->Log("DriverRestartedClr2Java::OnError");
+                                                       JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                       
HandleClr2JavaError(env, message, _jobjectDriverRestarted);
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f2cd5975/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 33b6571..a21a144 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/JavaClrBridge.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/JavaClrBridge.cpp
@@ -431,22 +431,20 @@ JNIEXPORT void JNICALL 
Java_org_apache_reef_javabridge_NativeInterop_clrSystemCo
   }
 }
 
-
 /*
 * Class:     org_apache_reef_javabridge_NativeInterop
 * Method:    callClrSystemOnRestartHandlerOnNext
-* Signature: 
(Ljava/lang/String;Ljava/lang/String;Lorg/apache/reef/javabridge/EvaluatorRequestorBridge;)[J
+* Signature: 
(Ljava/lang/String;Lorg/apache/reef/javabridge/EvaluatorRequestorBridge;Lorg/apache/reef/javabridge/DriverRestartedBridge;)[J
 */
 JNIEXPORT jlongArray JNICALL 
Java_org_apache_reef_javabridge_NativeInterop_callClrSystemOnRestartHandlerOnNext
-(JNIEnv * env, jclass jclassx, jstring dateTimeString, jstring httpServerPort, 
jobject jevaluatorRequestorBridge)
-{
+(JNIEnv * env, jclass jclassx, jstring httpServerPort, jobject 
jevaluatorRequestorBridge, jobject jdriverRestartedBridge) {
        try {
                
ManagedLog::LOGGER->Log("+Java_org_apache_reef_javabridge_NativeInterop_callClrSystemOnStartHandler");
-               DateTime dt = DateTime::Now;
                String^ strPort = ManagedStringFromJavaString(env, 
httpServerPort);
 
                EvaluatorRequestorClr2Java^ evaluatorRequestorBridge = gcnew 
EvaluatorRequestorClr2Java(env, jevaluatorRequestorBridge);
-               array<unsigned long long>^ handlers = 
ClrSystemHandlerWrapper::Call_ClrSystemRestartHandler_OnRestart(dt, strPort, 
evaluatorRequestorBridge);
+               DriverRestartedClr2Java^ driverRestartedBridge = gcnew 
DriverRestartedClr2Java(env, jdriverRestartedBridge);
+               array<unsigned long long>^ handlers = 
ClrSystemHandlerWrapper::Call_ClrSystemRestartHandler_OnRestart(strPort, 
evaluatorRequestorBridge, driverRestartedBridge);
                return JavaLongArrayFromManagedLongArray(env, handlers);
        }
        catch (System::Exception^ ex) {

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f2cd5975/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 f96644b..9098e64 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
@@ -134,6 +134,7 @@ under the License.
     <ClCompile Include="CompletedEvaluatorClr2Java.cpp" />
     <ClCompile Include="CompletedTaskClr2Java.cpp" />
     <ClCompile Include="ContextMessageClr2Java.cpp" />
+    <ClCompile Include="DriverRestartedClr2Java.cpp" />
     <ClCompile Include="EvaluatorRequestorClr2Java.cpp" />
     <ClCompile Include="FailedContextClr2Java.cpp" />
     <ClCompile Include="FailedEvaluatorClr2Java.cpp" />

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f2cd5975/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 b90d893..4d3a847 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
@@ -113,6 +113,9 @@
     <ClCompile Include="TaskMessageClr2Java.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="DriverRestartedClr2Java.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <Text Include="ReadMe.txt" />

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f2cd5975/lang/cs/Org.Apache.REEF.Driver/Bridge/Clr2java/IDriverRestartedClr2Java.cs
----------------------------------------------------------------------
diff --git 
a/lang/cs/Org.Apache.REEF.Driver/Bridge/Clr2java/IDriverRestartedClr2Java.cs 
b/lang/cs/Org.Apache.REEF.Driver/Bridge/Clr2java/IDriverRestartedClr2Java.cs
new file mode 100644
index 0000000..c1ec72c
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/Clr2java/IDriverRestartedClr2Java.cs
@@ -0,0 +1,36 @@
+/**
+ * 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 IDriverRestartedClr2Java : IClr2Java
+    {
+        /// <summary>
+        /// IDs of the expected Evaluators on Driver Restart.
+        /// </summary>
+        string[] GetExpectedEvaluatorIds();
+
+        /// <summary>
+        /// StartTime of the restart.
+        /// </summary>
+        DateTime GetStartTime();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f2cd5975/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 39a8919..6b370a1 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Bridge/ClrSystemHandlerWrapper.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/ClrSystemHandlerWrapper.cs
@@ -262,17 +262,17 @@ namespace Org.Apache.REEF.Driver.Bridge
         }
 
         public static ulong[] Call_ClrSystemRestartHandler_OnRestart(
-            DateTime startTime,
             string httpServerPort,
-            IEvaluatorRequestorClr2Java evaluatorRequestorClr2Java)
+            IEvaluatorRequestorClr2Java evaluatorRequestorClr2Java,
+            IDriverRestartedClr2Java driverRestartedClr2Java)
         {
             IEvaluatorRequestor evaluatorRequestor = new 
EvaluatorRequestor(evaluatorRequestorClr2Java);
             using 
(LOGGER.LogFunction("ClrSystemHandlerWrapper::Call_ClrSystemRestartHandler_OnRestart"))
             {
-                LOGGER.Log(Level.Info, "*** Restart time is " + startTime);
+                LOGGER.Log(Level.Info, "*** Restart time is " + 
driverRestartedClr2Java.GetStartTime());
                 LOGGER.Log(Level.Info, "*** httpServerPort: " + 
httpServerPort);
                 var handlers = GetHandlers(httpServerPort, evaluatorRequestor);
-                _driverBridge.RestartHandlerOnNext(startTime);
+                _driverBridge.RestartHandlerOnNext(driverRestartedClr2Java);
 
                 return handlers;
             }

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f2cd5975/lang/cs/Org.Apache.REEF.Driver/Bridge/DriverBridge.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/DriverBridge.cs 
b/lang/cs/Org.Apache.REEF.Driver/Bridge/DriverBridge.cs
index 449f4cf..27d342a 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Bridge/DriverBridge.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/DriverBridge.cs
@@ -31,6 +31,7 @@ using Org.Apache.REEF.Tang.Interface;
 using Org.Apache.REEF.Utilities.Logging;
 using Org.Apache.REEF.Wake.Time.Event;
 using Org.Apache.REEF.Common.Evaluator.Parameters;
+using Org.Apache.REEF.Driver.Bridge.Clr2java;
 using Org.Apache.REEF.Driver.Bridge.Events;
 
 namespace Org.Apache.REEF.Driver.Bridge
@@ -368,9 +369,9 @@ namespace Org.Apache.REEF.Driver.Bridge
         /// <summary>
         /// Call restart handlers
         /// </summary>
-        internal void RestartHandlerOnNext(DateTime startTime)
+        internal void RestartHandlerOnNext(IDriverRestartedClr2Java 
driverRestartedClr2Java)
         {
-            var driverRestarted = new DriverRestarted(startTime);
+            var driverRestarted = new DriverRestarted(driverRestartedClr2Java);
             foreach (var handler in _driverRestartedHandlers)
             {
                 handler.OnNext(driverRestarted);

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f2cd5975/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/DriverRestarted.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/DriverRestarted.cs 
b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/DriverRestarted.cs
index 5f8fdcc..9ff5847 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/DriverRestarted.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/DriverRestarted.cs
@@ -17,21 +17,33 @@
  * under the License.
  */
 using System;
+using System.Collections.Generic;
+using Org.Apache.REEF.Driver.Bridge.Clr2java;
 
 namespace Org.Apache.REEF.Driver.Bridge.Events
 {
+    /// <summary>
+    /// The implementation of IDriverRestarted.
+    /// </summary>
     internal sealed class DriverRestarted : IDriverRestarted
     {
         private readonly DateTime _startTime;
+        private readonly ISet<string> _expectedEvaluatorIds; 
 
-        internal DriverRestarted(DateTime startTime)
+        internal DriverRestarted(IDriverRestartedClr2Java 
driverRestartedClr2Java)
         {
-            _startTime = startTime;
+            _startTime = driverRestartedClr2Java.GetStartTime();
+            _expectedEvaluatorIds = new 
HashSet<string>(driverRestartedClr2Java.GetExpectedEvaluatorIds());
         }
 
         public DateTime StartTime
         {
             get { return _startTime; }
         }
+
+        public ISet<string> ExpectedEvaluatorIds
+        {
+            get { return new HashSet<string>(_expectedEvaluatorIds); }
+        } 
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f2cd5975/lang/cs/Org.Apache.REEF.Driver/IDriverRestarted.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/IDriverRestarted.cs 
b/lang/cs/Org.Apache.REEF.Driver/IDriverRestarted.cs
index 63bf61a..6ccfa60 100644
--- a/lang/cs/Org.Apache.REEF.Driver/IDriverRestarted.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/IDriverRestarted.cs
@@ -16,6 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
+using System;
+using System.Collections.Generic;
+
 namespace Org.Apache.REEF.Driver
 {
     /// <summary>
@@ -23,6 +27,10 @@ namespace Org.Apache.REEF.Driver
     /// </summary>
     public interface IDriverRestarted : IDriverStarted
     {
-         
+        /// <summary>
+        /// The set of expected Evaluator IDs that are returned to the Driver 
by the
+        /// RM on Driver Restart.
+        /// </summary>
+        ISet<string> ExpectedEvaluatorIds { get; } 
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f2cd5975/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 b06feb1..329ad86 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\IDriverRestartedClr2Java.cs" />
     <Compile Include="Bridge\Clr2java\IEvaluatorRequestorClr2Java.cs" />
     <Compile Include="Bridge\Clr2java\IFailedContextClr2Java.cs" />
     <Compile Include="Bridge\Clr2java\IFailedEvaluatorClr2Java.cs" />

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f2cd5975/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 2b0485b..ed3a59b 100644
--- a/lang/cs/Org.Apache.REEF.Examples/DriverRestart/HelloRestartDriver.cs
+++ b/lang/cs/Org.Apache.REEF.Examples/DriverRestart/HelloRestartDriver.cs
@@ -101,7 +101,7 @@ namespace Org.Apache.REEF.Examples.DriverRestart
         public void OnNext(IDriverRestarted value)
         {
             _restarted = true;
-            Logger.Log(Level.Info, "Hello! HelloRestartDriver has restarted!");
+            Logger.Log(Level.Info, "Hello! HelloRestartDriver has restarted! 
Expecting these Evaluator IDs [{0}]", string.Join(", ", 
value.ExpectedEvaluatorIds));
         }
 
         public void OnNext(IActiveContext value)

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f2cd5975/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
new file mode 100644
index 0000000..54b08c0
--- /dev/null
+++ 
b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/DriverRestartedBridge.java
@@ -0,0 +1,47 @@
+/*
+ * 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;
+
+import org.apache.reef.annotations.Unstable;
+import org.apache.reef.annotations.audience.DriverSide;
+import org.apache.reef.annotations.audience.Private;
+
+import java.util.Set;
+
+/**
+ * Created by anchung on 9/1/2015.
+ */
+@Private
+@DriverSide
+@Unstable
+public final class DriverRestartedBridge extends NativeBridge {
+  private final String[] expectedEvaluatorIds;
+
+  public DriverRestartedBridge(final Set<String> expectedEvaluatorIds) {
+    this.expectedEvaluatorIds = expectedEvaluatorIds.toArray(new 
String[expectedEvaluatorIds.size()]);
+  }
+
+  public String[] getExpectedEvaluatorIds() {
+    return expectedEvaluatorIds;
+  }
+
+  @Override
+  public void close() throws Exception {
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f2cd5975/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 babdb10..a622dda 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
@@ -148,9 +148,9 @@ public final class NativeInterop {
   );
 
   public static native long[] callClrSystemOnRestartHandlerOnNext(
-      final String dateTime,
       final String httpServerPortNumber,
-      final EvaluatorRequestorBridge javaEvaluatorRequestorBridge
+      final EvaluatorRequestorBridge javaEvaluatorRequestorBridge,
+      final DriverRestartedBridge driverRestartedBridge
   );
 
   public static native void clrSystemDriverRestartActiveContextHandlerOnNext(

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f2cd5975/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/generic/DriverRestartClrHandlersInitializer.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/generic/DriverRestartClrHandlersInitializer.java
 
b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/generic/DriverRestartClrHandlersInitializer.java
index d17c502..6885743 100644
--- 
a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/generic/DriverRestartClrHandlersInitializer.java
+++ 
b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/generic/DriverRestartClrHandlersInitializer.java
@@ -22,6 +22,7 @@ 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.DriverRestarted;
+import org.apache.reef.javabridge.DriverRestartedBridge;
 import org.apache.reef.javabridge.EvaluatorRequestorBridge;
 import org.apache.reef.javabridge.NativeInterop;
 
@@ -43,6 +44,7 @@ final class DriverRestartClrHandlersInitializer implements 
ClrHandlersInitialize
   public long[] getClrHandlers(final String portNumber, final 
EvaluatorRequestorBridge evaluatorRequestorBridge) {
     // TODO[REEF-689]: Make callClrSystemOnRestartedHandlerOnNext take 
DriverRestarted object.
     return NativeInterop.callClrSystemOnRestartHandlerOnNext(
-        driverRestarted.getStartTime().toString(), portNumber, 
evaluatorRequestorBridge);
+        portNumber,
+        evaluatorRequestorBridge, new 
DriverRestartedBridge(driverRestarted.getExpectedEvaluatorIds()));
   }
 }

Reply via email to