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())); } }
