Search in sources :

Example 6 with TaskStatus

use of com.dtstack.taier.pluginapi.enums.TaskStatus in project Taier by DTStack.

the class AbstractRdbsClientTest method testGetJobStatus.

@Test
public void testGetJobStatus() throws Exception {
    RdbsExeQueue rdbsExeQueue = PowerMockito.mock(RdbsExeQueue.class);
    when(rdbsExeQueue.getJobStatus(any(String.class))).thenReturn(TaskStatus.RUNNING);
    MemberModifier.field(TestRdbsClient.class, "exeQueue").set(testRdbsClient, rdbsExeQueue);
    JobIdentifier jobIdentifier = JobIdentifier.createInstance("test", "test", "test");
    TaskStatus status = testRdbsClient.getJobStatus(jobIdentifier);
    Assert.assertEquals(status, TaskStatus.RUNNING);
}
Also used : RdbsExeQueue(com.dtstack.taier.rdbs.common.executor.RdbsExeQueue) JobIdentifier(com.dtstack.taier.pluginapi.JobIdentifier) TaskStatus(com.dtstack.taier.pluginapi.enums.TaskStatus) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest) Test(org.junit.Test)

Example 7 with TaskStatus

use of com.dtstack.taier.pluginapi.enums.TaskStatus in project Taier by DTStack.

the class JobStatusDealer method dealJob.

private void dealJob(String jobId) throws Exception {
    ScheduleJob scheduleJob = scheduleJobService.getByJobId(jobId);
    ScheduleEngineJobCache engineJobCache = scheduleJobCacheService.getJobCacheByJobId(jobId);
    if (scheduleJob == null || engineJobCache == null || (StringUtils.isBlank(scheduleJob.getApplicationId()) && StringUtils.isBlank(scheduleJob.getEngineJobId()))) {
        shardCache.updateLocalMemTaskStatus(jobId, TaskStatus.CANCELED.getStatus());
        Integer status = TaskStatus.CANCELED.getStatus();
        String engineJobId = null;
        if (scheduleJob != null) {
            engineJobId = scheduleJob.getEngineJobId();
            if (TaskStatus.getStoppedStatus().contains(scheduleJob.getStatus())) {
                status = scheduleJob.getStatus();
            } else {
                scheduleJobService.updateJobStatusAndExecTime(jobId, status);
            }
        } else {
            scheduleJobService.updateJobStatusAndExecTime(jobId, status);
        }
        scheduleJobCacheService.deleteByJobId(jobId);
        LOGGER.info("jobId:{} set job finished, status:{}, scheduleJob is {} null, engineJobCache is {} null, engineJobId is {} blank.", jobId, status, scheduleJob == null ? "" : "not", engineJobCache == null ? "" : "not", engineJobId == null ? "" : "not");
    } else {
        String engineTaskId = scheduleJob.getEngineJobId();
        String appId = scheduleJob.getApplicationId();
        ParamAction paramAction = PublicUtil.jsonStrToObject(engineJobCache.getJobInfo(), ParamAction.class);
        Integer taskType = paramAction.getTaskType();
        Map<String, Object> pluginInfo = paramAction.getPluginInfo();
        JobIdentifier jobIdentifier = new JobIdentifier(engineTaskId, appId, jobId, scheduleJob.getTenantId(), taskType, TaskParamsUtils.parseDeployTypeByTaskParams(paramAction.getTaskParams(), scheduleJob.getComputeType()).getType(), null, MapUtils.isEmpty(pluginInfo) ? null : JSONObject.toJSONString(pluginInfo), paramAction.getComponentVersion());
        TaskStatus taskStatus = workerOperator.getJobStatus(jobIdentifier);
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("------ jobId:{} dealJob status:{}", jobId, taskStatus);
        }
        if (taskStatus != null) {
            taskStatus = checkNotFoundStatus(taskStatus, jobId);
            Integer status = taskStatus.getStatus();
            // 重试状态 先不更新状态
            boolean isRestart = jobRestartDealer.checkAndRestart(status, scheduleJob, engineJobCache, (job, client) -> ForkJoinPool.commonPool().execute(() -> {
                String engineLog = workerOperator.getEngineLog(jobIdentifier);
                jobRestartDealer.jobRetryRecord(job, client, engineLog);
            }));
            if (isRestart) {
                LOGGER.info("----- jobId:{} after dealJob status:{}", jobId, taskStatus);
                return;
            }
            shardCache.updateLocalMemTaskStatus(jobId, status);
            updateJobStatusWithPredicate(scheduleJob, jobId, status);
            // 数据的更新顺序,先更新job_cache,再更新engine_batch_job
            if (TaskStatus.getStoppedStatus().contains(status)) {
                jobLogDelayDealer(jobId, jobIdentifier, engineJobCache.getComputeType(), scheduleJob.getType());
                jobStatusFrequency.remove(jobId);
                scheduleJobCacheService.deleteByJobId(jobId);
                LOGGER.info("------ jobId:{} is stop status {} delete jobCache", jobId, status);
            }
            if (LOGGER.isDebugEnabled()) {
                LOGGER.debug("------ jobId:{} after dealJob status:{}", jobId, taskStatus);
            }
        }
    }
}
Also used : ScheduleJob(com.dtstack.taier.dao.domain.ScheduleJob) ParamAction(com.dtstack.taier.pluginapi.pojo.ParamAction) JSONObject(com.alibaba.fastjson.JSONObject) JobIdentifier(com.dtstack.taier.pluginapi.JobIdentifier) TaskStatus(com.dtstack.taier.pluginapi.enums.TaskStatus) ScheduleEngineJobCache(com.dtstack.taier.dao.domain.ScheduleEngineJobCache)

Example 8 with TaskStatus

use of com.dtstack.taier.pluginapi.enums.TaskStatus in project Taier by DTStack.

the class LogAspect method afterReturningAdvice.

@AfterReturning(pointcut = "execution(public * com.dtstack.taier.scheduler.WorkerOperator.*(..))", returning = "ret")
public void afterReturningAdvice(JoinPoint joinPoint, Object ret) {
    try {
        String methodName = joinPoint.getSignature().getName();
        if (filterMethod.contains(methodName)) {
            return;
        }
        String argsString = null;
        Object[] args = joinPoint.getArgs();
        Optional<Object> jobClientOpt = Arrays.stream(args).filter(a -> a instanceof JobClient).findFirst();
        if (jobClientOpt.isPresent()) {
            if (logPluginInfoMethod.contains(methodName)) {
                argsString = JSONObject.toJSONString(jobClientOpt.get(), submitPropertyFilter);
            } else {
                // 忽略pluginInfo打印
                argsString = JSONObject.toJSONString(jobClientOpt.get(), propertyFilter);
            }
        } else {
            if (skipChangeMethod.contains(methodName)) {
                if (ret instanceof TaskStatus && (TaskStatus.RUNNING.equals(ret) || TaskStatus.SCHEDULED.equals(ret))) {
                    // 状态获取 多以running 为主 过滤频繁打印
                    return;
                }
            } else {
                argsString = JSONObject.toJSONString(args);
            }
        }
        if (LOGGER.isInfoEnabled()) {
            JSONObject logInfo = new JSONObject(3);
            logInfo.put("method", joinPoint.getSignature().getDeclaringTypeName() + "." + methodName);
            logInfo.put("args", argsString);
            logInfo.put("return", JSONObject.toJSONString(ret));
            LOGGER.info(logInfo.toJSONString());
        }
    } catch (Exception e) {
        LOGGER.error("logAspect error ", e);
    }
}
Also used : Arrays(java.util.Arrays) Logger(org.slf4j.Logger) PropertyFilter(com.alibaba.fastjson.serializer.PropertyFilter) LoggerFactory(org.slf4j.LoggerFactory) AfterReturning(org.aspectj.lang.annotation.AfterReturning) ArrayList(java.util.ArrayList) JobClient(com.dtstack.taier.pluginapi.JobClient) Component(org.springframework.stereotype.Component) Lists(com.google.common.collect.Lists) Aspect(org.aspectj.lang.annotation.Aspect) Optional(java.util.Optional) JSONObject(com.alibaba.fastjson.JSONObject) JoinPoint(org.aspectj.lang.JoinPoint) TaskStatus(com.dtstack.taier.pluginapi.enums.TaskStatus) JSONObject(com.alibaba.fastjson.JSONObject) JSONObject(com.alibaba.fastjson.JSONObject) TaskStatus(com.dtstack.taier.pluginapi.enums.TaskStatus) JobClient(com.dtstack.taier.pluginapi.JobClient) AfterReturning(org.aspectj.lang.annotation.AfterReturning)

Aggregations

TaskStatus (com.dtstack.taier.pluginapi.enums.TaskStatus)8 JSONObject (com.alibaba.fastjson.JSONObject)5 PluginDefineException (com.dtstack.taier.pluginapi.exception.PluginDefineException)4 IOException (java.io.IOException)4 MalformedURLException (java.net.MalformedURLException)4 ClusterClient (org.apache.flink.client.program.ClusterClient)4 YarnException (org.apache.hadoop.yarn.exceptions.YarnException)4 JobIdentifier (com.dtstack.taier.pluginapi.JobIdentifier)2 JsonObject (com.google.gson.JsonObject)2 PropertyFilter (com.alibaba.fastjson.serializer.PropertyFilter)1 ClientAccessException (com.dtstack.taier.common.exception.ClientAccessException)1 RdosDefineException (com.dtstack.taier.common.exception.RdosDefineException)1 ScheduleEngineJobCache (com.dtstack.taier.dao.domain.ScheduleEngineJobCache)1 ScheduleJob (com.dtstack.taier.dao.domain.ScheduleJob)1 JobClient (com.dtstack.taier.pluginapi.JobClient)1 IClient (com.dtstack.taier.pluginapi.client.IClient)1 ParamAction (com.dtstack.taier.pluginapi.pojo.ParamAction)1 RdbsExeQueue (com.dtstack.taier.rdbs.common.executor.RdbsExeQueue)1 Lists (com.google.common.collect.Lists)1 ArrayList (java.util.ArrayList)1