/// <summary> /// Launch a java class in ClientConstants.ClientJarFilePrefix with provided parameters. /// </summary> /// <param name="javaLogLevel">Java logging level</param> /// <param name="javaClassName">Java class that launches the Java driver</param> /// <param name="parameters">Parameters associated with the Java main class</param> /// <param name="cancellationToken">Token to cancel the launch</param> public Task LaunchAsync( JavaLoggingSetting javaLogLevel, string javaClassName, string[] parameters, CancellationToken cancellationToken = default) { var startInfo = new ProcessStartInfo { Arguments = AssembleArguments(javaLogLevel, javaClassName, parameters), FileName = GetJavaCommand(), UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true, }; Log.Log(Level.Info, "Launch Java with command: {0} {1}", startInfo.FileName, startInfo.Arguments); var processExitTracker = new TaskCompletionSource <bool>(); var process = new Process { StartInfo = startInfo, EnableRaisingEvents = true }; process.Exited += (sender, args) => { processExitTracker.SetResult(process.ExitCode == 0); }; if (cancellationToken != default) { cancellationToken.Register(processExitTracker.SetCanceled); } process.OutputDataReceived += delegate(object sender, DataReceivedEventArgs e) { if (!string.IsNullOrWhiteSpace(e.Data)) { Log.Log(Level.Info, e.Data); } }; process.ErrorDataReceived += delegate(object sender, DataReceivedEventArgs e) { if (!string.IsNullOrWhiteSpace(e.Data)) { Log.Log(Level.Error, e.Data); } }; if (!process.Start()) { processExitTracker.SetException(new Exception("Java client process didn't start.")); } else { process.BeginErrorReadLine(); process.BeginOutputReadLine(); } return(processExitTracker.Task); }
/// <summary> /// Assembles the command line arguments. Used by LaunchAsync() /// </summary> /// <param name="javaLogLevel"></param> /// <param name="javaClassName"></param> /// <param name="parameters"></param> /// <returns></returns> private string AssembleArguments(JavaLoggingSetting javaLogLevel, string javaClassName, params string[] parameters) { IList <string> arguments = new List <string>(); if (javaLogLevel == JavaLoggingSetting.Verbose) { arguments.Add("-Djava.util.logging.config.class=org.apache.reef.util.logging.Config"); } arguments.Add("-cp"); arguments.Add(GetClientClasspath()); arguments.Add(javaClassName); return(string.Join(" ", arguments.Concat(parameters))); }
/// <summary> /// Launch a java class in ClientConstants.ClientJarFilePrefix with provided parameters. /// </summary> /// <param name="javaLogLevel"></param> /// <param name="javaClassName"></param> /// <param name="parameters"></param> public Task LaunchAsync(JavaLoggingSetting javaLogLevel, string javaClassName, params string[] parameters) { var startInfo = new ProcessStartInfo { Arguments = AssembleArguments(javaLogLevel, javaClassName, parameters), FileName = GetJavaCommand(), UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true, }; var msg = string.Format(CultureInfo.CurrentCulture, "Launch Java with command: {0} {1}", startInfo.FileName, startInfo.Arguments); Logger.Log(Level.Info, msg); var process = Process.Start(startInfo); var processExitTracker = new TaskCompletionSource<bool>(); if (process != null) { process.EnableRaisingEvents = true; process.OutputDataReceived += delegate(object sender, DataReceivedEventArgs e) { if (!string.IsNullOrWhiteSpace(e.Data)) { Logger.Log(Level.Info, e.Data); } }; process.ErrorDataReceived += delegate(object sender, DataReceivedEventArgs e) { if (!string.IsNullOrWhiteSpace(e.Data)) { Logger.Log(Level.Error, e.Data); } }; process.BeginErrorReadLine(); process.BeginOutputReadLine(); process.Exited += (sender, args) => { processExitTracker.SetResult(process.ExitCode == 0); }; } else { processExitTracker.SetException(new Exception("Java client process didn't start.")); } return processExitTracker.Task; }
internal JobParameters( string jobIdentifier, int maxApplicationSubmissions, int driverMemory, string stdoutFilePath, string stderrFilePath, JavaLoggingSetting logSetting) { _jobIdentifier = jobIdentifier; _maxApplicationSubmissions = maxApplicationSubmissions; _driverMemory = driverMemory; _stdoutFilePath = string.IsNullOrWhiteSpace(stdoutFilePath) ? Optional<string>.Empty() : Optional<string>.Of(stdoutFilePath); _stderrFilePath = string.IsNullOrWhiteSpace(stderrFilePath) ? Optional<string>.Empty() : Optional<string>.Of(stderrFilePath); _logSetting = logSetting; }
internal JobParameters( string jobIdentifier, int maxApplicationSubmissions, int driverMemory, string stdoutFilePath, string stderrFilePath, JavaLoggingSetting logSetting) { _jobIdentifier = jobIdentifier; _maxApplicationSubmissions = maxApplicationSubmissions; _driverMemory = driverMemory; _stdoutFilePath = string.IsNullOrWhiteSpace(stdoutFilePath) ? Optional <string> .Empty() : Optional <string> .Of(stdoutFilePath); _stderrFilePath = string.IsNullOrWhiteSpace(stderrFilePath) ? Optional <string> .Empty() : Optional <string> .Of(stderrFilePath); _logSetting = logSetting; }
protected void TestRun(HashSet<string> appDlls, IConfiguration driverBridgeConfig, bool runOnYarn = false, JavaLoggingSetting javaLogSettings = JavaLoggingSetting.INFO) { ClrClientHelper.Run(appDlls, driverBridgeConfig, new DriverSubmissionSettings() { RunOnYarn = runOnYarn, JavaLogLevel = javaLogSettings }, _reefJar, _runCommand, _clrFolder, _className); }
public JobRequestBuilder SetJavaLogLevel(JavaLoggingSetting javaLogLevel) { _jobParametersBuilder.SetJavaLogLevel(javaLogLevel); return(this); }
/// <summary> /// Sets the Java Log Level. /// </summary> public JobParametersBuilder SetJavaLogLevel(JavaLoggingSetting javaLogLevel) { _javaLogLevel = javaLogLevel; return(this); }
public JobRequestBuilder SetJavaLogLevel(JavaLoggingSetting javaLogLevel) { _jobParametersBuilder.SetJavaLogLevel(javaLogLevel); return this; }
protected void TestRun(HashSet <string> appDlls, IConfiguration driverBridgeConfig, bool runOnYarn = false, JavaLoggingSetting javaLogSettings = JavaLoggingSetting.INFO) { ClrClientHelper.Run(appDlls, driverBridgeConfig, new DriverSubmissionSettings() { RunOnYarn = runOnYarn, JavaLogLevel = javaLogSettings }, _reefJar, _runCommand, _clrFolder, _className); }
/// <summary> /// Assembles the command line arguments. Used by LaunchAsync() /// </summary> /// <param name="javaLogLevel"></param> /// <param name="javaClassName"></param> /// <param name="parameters"></param> /// <returns></returns> private string AssembleArguments(JavaLoggingSetting javaLogLevel, string javaClassName, params string[] parameters) { IList<string> arguments = new List<string>(); if (javaLogLevel == JavaLoggingSetting.Verbose) { arguments.Add("-Djava.util.logging.config.class=org.apache.reef.util.logging.Config"); } arguments.Add("-cp"); arguments.Add(GetClientClasspath()); arguments.Add(javaClassName); foreach (var parameter in parameters) { arguments.Add(parameter); } return string.Join(" ", arguments); }
/// <summary> /// Sets the Java Log Level. /// </summary> public JobParametersBuilder SetJavaLogLevel(JavaLoggingSetting javaLogLevel) { _javaLogLevel = javaLogLevel; return this; }