fix 9243 (#9244)
parent
03a0c9f544
commit
85e56b5e2a
|
|
@ -25,10 +25,9 @@ import org.apache.dolphinscheduler.common.utils.JSONUtils;
|
|||
import org.apache.dolphinscheduler.dao.entity.Alert;
|
||||
import org.apache.dolphinscheduler.dao.entity.AlertPluginInstance;
|
||||
import org.apache.dolphinscheduler.dao.entity.ProcessAlertContent;
|
||||
import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
|
||||
import org.apache.dolphinscheduler.dao.entity.ProcessInstance;
|
||||
import org.apache.dolphinscheduler.dao.entity.ProjectUser;
|
||||
import org.apache.dolphinscheduler.dao.entity.ServerAlertContent;
|
||||
import org.apache.dolphinscheduler.dao.entity.TaskDefinition;
|
||||
import org.apache.dolphinscheduler.dao.entity.TaskInstance;
|
||||
import org.apache.dolphinscheduler.dao.mapper.AlertGroupMapper;
|
||||
import org.apache.dolphinscheduler.dao.mapper.AlertMapper;
|
||||
|
|
@ -116,19 +115,22 @@ public class AlertDao {
|
|||
* process time out alert
|
||||
*
|
||||
* @param processInstance processInstance
|
||||
* @param processDefinition processDefinition
|
||||
* @param projectUser projectUser
|
||||
*/
|
||||
public void sendProcessTimeoutAlert(ProcessInstance processInstance, ProcessDefinition processDefinition) {
|
||||
public void sendProcessTimeoutAlert(ProcessInstance processInstance, ProjectUser projectUser) {
|
||||
int alertGroupId = processInstance.getWarningGroupId();
|
||||
Alert alert = new Alert();
|
||||
List<ProcessAlertContent> processAlertContentList = new ArrayList<>(1);
|
||||
ProcessAlertContent processAlertContent = ProcessAlertContent.newBuilder()
|
||||
.projectCode(processDefinition.getProjectCode())
|
||||
.projectName(processDefinition.getProjectName())
|
||||
.owner(processDefinition.getUserName())
|
||||
.projectCode(projectUser.getProjectCode())
|
||||
.projectName(projectUser.getProjectName())
|
||||
.owner(projectUser.getUserName())
|
||||
.processId(processInstance.getId())
|
||||
.processDefinitionCode(processInstance.getProcessDefinitionCode())
|
||||
.processName(processInstance.getName())
|
||||
.processType(processInstance.getCommandType())
|
||||
.processState(processInstance.getState())
|
||||
.runTimes(processInstance.getRunTimes())
|
||||
.processStartTime(processInstance.getStartTime())
|
||||
.processHost(processInstance.getHost())
|
||||
.event(AlertEvent.TIME_OUT)
|
||||
|
|
@ -154,15 +156,15 @@ public class AlertDao {
|
|||
*
|
||||
* @param processInstance processInstanceId
|
||||
* @param taskInstance taskInstance
|
||||
* @param taskDefinition taskDefinition
|
||||
* @param projectUser projectUser
|
||||
*/
|
||||
public void sendTaskTimeoutAlert(ProcessInstance processInstance, TaskInstance taskInstance, TaskDefinition taskDefinition) {
|
||||
public void sendTaskTimeoutAlert(ProcessInstance processInstance, TaskInstance taskInstance, ProjectUser projectUser) {
|
||||
Alert alert = new Alert();
|
||||
List<ProcessAlertContent> processAlertContentList = new ArrayList<>(1);
|
||||
ProcessAlertContent processAlertContent = ProcessAlertContent.newBuilder()
|
||||
.projectCode(taskDefinition.getProjectCode())
|
||||
.projectName(taskDefinition.getProjectName())
|
||||
.owner(taskDefinition.getUserName())
|
||||
.projectCode(projectUser.getProjectCode())
|
||||
.projectName(projectUser.getProjectName())
|
||||
.owner(projectUser.getUserName())
|
||||
.processId(processInstance.getId())
|
||||
.processDefinitionCode(processInstance.getProcessDefinitionCode())
|
||||
.processName(processInstance.getName())
|
||||
|
|
|
|||
|
|
@ -38,6 +38,12 @@ public class ProjectUser {
|
|||
@TableField("project_id")
|
||||
private int projectId;
|
||||
|
||||
/**
|
||||
* project code
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private long projectCode;
|
||||
|
||||
/**
|
||||
* project name
|
||||
*/
|
||||
|
|
@ -125,12 +131,21 @@ public class ProjectUser {
|
|||
this.perm = perm;
|
||||
}
|
||||
|
||||
public long getProjectCode() {
|
||||
return projectCode;
|
||||
}
|
||||
|
||||
public void setProjectCode(long projectCode) {
|
||||
this.projectCode = projectCode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ProjectUser{"
|
||||
+ "id=" + id
|
||||
+ ", userId=" + userId
|
||||
+ ", projectId=" + projectId
|
||||
+ ", projectCode=" + projectCode
|
||||
+ ", projectName='" + projectName + '\''
|
||||
+ ", userName='" + userName + '\''
|
||||
+ ", perm=" + perm
|
||||
|
|
|
|||
|
|
@ -150,6 +150,7 @@
|
|||
<select id="queryProjectWithUserByProcessInstanceId" resultType="org.apache.dolphinscheduler.dao.entity.ProjectUser">
|
||||
select
|
||||
dp.id project_id,
|
||||
dp.code project_code,
|
||||
dp.name project_name,
|
||||
u.user_name user_name
|
||||
from t_ds_process_instance di
|
||||
|
|
|
|||
|
|
@ -384,13 +384,15 @@ public class WorkflowExecuteThread {
|
|||
ITaskProcessor taskProcessor = activeTaskProcessorMaps.get(taskInstance.getTaskCode());
|
||||
taskProcessor.action(TaskAction.TIMEOUT);
|
||||
} else {
|
||||
processAlertManager.sendTaskTimeoutAlert(processInstance, taskInstance, taskInstance.getTaskDefine());
|
||||
ProjectUser projectUser = processService.queryProjectWithUserByProcessInstanceId(processInstance.getId());
|
||||
processAlertManager.sendTaskTimeoutAlert(processInstance, taskInstance, projectUser);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean processTimeout() {
|
||||
this.processAlertManager.sendProcessTimeoutAlert(this.processInstance, this.processDefinition);
|
||||
ProjectUser projectUser = processService.queryProjectWithUserByProcessInstanceId(processInstance.getId());
|
||||
this.processAlertManager.sendProcessTimeoutAlert(this.processInstance, projectUser);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,11 +26,9 @@ import org.apache.dolphinscheduler.dao.entity.Alert;
|
|||
import org.apache.dolphinscheduler.dao.entity.DqExecuteResult;
|
||||
import org.apache.dolphinscheduler.dao.entity.DqExecuteResultAlertContent;
|
||||
import org.apache.dolphinscheduler.dao.entity.ProcessAlertContent;
|
||||
import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
|
||||
import org.apache.dolphinscheduler.dao.entity.ProcessInstance;
|
||||
import org.apache.dolphinscheduler.dao.entity.ProjectUser;
|
||||
import org.apache.dolphinscheduler.dao.entity.TaskAlertContent;
|
||||
import org.apache.dolphinscheduler.dao.entity.TaskDefinition;
|
||||
import org.apache.dolphinscheduler.dao.entity.TaskInstance;
|
||||
import org.apache.dolphinscheduler.plugin.task.api.enums.dp.DqTaskState;
|
||||
|
||||
|
|
@ -108,7 +106,7 @@ public class ProcessAlertManager {
|
|||
if (processInstance.getState().typeIsSuccess()) {
|
||||
List<ProcessAlertContent> successTaskList = new ArrayList<>(1);
|
||||
ProcessAlertContent processAlertContent = ProcessAlertContent.newBuilder()
|
||||
.projectId(projectUser.getProjectId())
|
||||
.projectCode(projectUser.getProjectCode())
|
||||
.projectName(projectUser.getProjectName())
|
||||
.owner(projectUser.getUserName())
|
||||
.processId(processInstance.getId())
|
||||
|
|
@ -132,7 +130,7 @@ public class ProcessAlertManager {
|
|||
continue;
|
||||
}
|
||||
ProcessAlertContent processAlertContent = ProcessAlertContent.newBuilder()
|
||||
.projectId(projectUser.getProjectId())
|
||||
.projectCode(projectUser.getProjectCode())
|
||||
.projectName(projectUser.getProjectName())
|
||||
.owner(projectUser.getUserName())
|
||||
.processId(processInstance.getId())
|
||||
|
|
@ -225,7 +223,7 @@ public class ProcessAlertManager {
|
|||
String success = processInstance.getState().typeIsSuccess() ? "success" : "failed";
|
||||
alert.setTitle(cmdName + " " + success);
|
||||
alert.setWarningType(processInstance.getState().typeIsSuccess() ? WarningType.SUCCESS : WarningType.FAILURE);
|
||||
String content = getContentProcessInstance(processInstance, taskInstances,projectUser);
|
||||
String content = getContentProcessInstance(processInstance, taskInstances, projectUser);
|
||||
alert.setContent(content);
|
||||
alert.setAlertGroupId(processInstance.getWarningGroupId());
|
||||
alert.setCreateTime(new Date());
|
||||
|
|
@ -270,10 +268,10 @@ public class ProcessAlertManager {
|
|||
* send process timeout alert
|
||||
*
|
||||
* @param processInstance process instance
|
||||
* @param processDefinition process definition
|
||||
* @param projectUser projectUser
|
||||
*/
|
||||
public void sendProcessTimeoutAlert(ProcessInstance processInstance, ProcessDefinition processDefinition) {
|
||||
alertDao.sendProcessTimeoutAlert(processInstance, processDefinition);
|
||||
public void sendProcessTimeoutAlert(ProcessInstance processInstance, ProjectUser projectUser) {
|
||||
alertDao.sendProcessTimeoutAlert(processInstance, projectUser);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -359,8 +357,8 @@ public class ProcessAlertManager {
|
|||
return JSONUtils.toJsonString(content);
|
||||
}
|
||||
|
||||
public void sendTaskTimeoutAlert(ProcessInstance processInstance, TaskInstance taskInstance, TaskDefinition taskDefinition) {
|
||||
alertDao.sendTaskTimeoutAlert(processInstance, taskInstance, taskDefinition);
|
||||
public void sendTaskTimeoutAlert(ProcessInstance processInstance, TaskInstance taskInstance, ProjectUser projectUser) {
|
||||
alertDao.sendTaskTimeoutAlert(processInstance, taskInstance, projectUser);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -376,7 +374,7 @@ public class ProcessAlertManager {
|
|||
String cmdName = getCommandCnName(processInstance.getCommandType());
|
||||
List<ProcessAlertContent> blockingNodeList = new ArrayList<>(1);
|
||||
ProcessAlertContent processAlertContent = ProcessAlertContent.newBuilder()
|
||||
.projectId(projectUser.getProjectId())
|
||||
.projectCode(projectUser.getProjectCode())
|
||||
.projectName(projectUser.getProjectName())
|
||||
.owner(projectUser.getUserName())
|
||||
.processId(processInstance.getId())
|
||||
|
|
|
|||
Loading…
Reference in New Issue