Exemple #1
0
        /// <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状态,将继续运行"));
            }
        }
Exemple #2
0
        /// <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);
            }
        }