/// <summary> /// 清理脱离控制的作业分割进程 /// </summary> /// <param name="jobSplitProcess">Job split process.</param> private void CleanOutOfControlJobSplitProcess(IEnumerable <string[]> jobSplitProcess, CancellationToken cancellationToken = default) { foreach (var processInfo in jobSplitProcess) { var processId = int.Parse(processInfo[1]); var jobName = processInfo[2]; var jobId = processInfo[3]; LogWriter.Write(string.Format("正在处理:{0},{1}", jobName, jobId)); var jobRecord = _cluster.ConfigCenter.GetJobRecord(jobName, jobId, _cluster, cancellationToken); // 作业不存在了,看看作业分割进程还在不在 if (jobRecord == null) { LogWriter.Write("作业记录不存在了,尝试关闭废弃的作业分割进程"); SwiftProcess.KillAbandonedJobSplitProcess(processId, jobName, jobId); continue; } LogWriter.Write(string.Format("作业记录存在")); // 任务非PlanMaking状态,看看进程在不在 if (jobRecord.Status != EnumJobRecordStatus.PlanMaking) { LogWriter.Write("任务非PlanMaking状态,尝试关闭废弃的作业分割进程"); SwiftProcess.KillAbandonedJobSplitProcess(processId, jobName, jobId); continue; } LogWriter.Write(string.Format("作业在PlanMaking状态,将继续运行")); } }
/// <summary> /// 清理脱离控制的作业分割进程 /// </summary> /// <param name="jobSplitProcess">Job split process.</param> private void CleanOutOfControlJobSplitProcess(IEnumerable <string[]> jobSplitProcess) { LogWriter.Write("Worker不应该执行作业分割进程,他们都应该被Kill"); foreach (var processInfo in jobSplitProcess) { var processId = int.Parse(processInfo[1]); var jobName = processInfo[2]; var jobId = processInfo[3]; LogWriter.Write(string.Format("正在处理:{0},{1}", jobName, jobId)); SwiftProcess.KillAbandonedJobSplitProcess(processId, jobName, jobId); } }