From be09a1bd18ce668f3da990bfe9abd84941362340 Mon Sep 17 00:00:00 2001 From: CalvinKirs Date: Tue, 26 Jan 2021 13:18:16 +0800 Subject: [PATCH 1/7] Fix mybatis-plus empty value update problem When deleting the alert-plugin instance, determine whether there is an alert group association --- .../dolphinscheduler/api/enums/Status.java | 1 + .../impl/AlertPluginInstanceServiceImpl.java | 22 +++++++++++++++++++ .../dao/entity/AlertPluginInstance.java | 3 ++- .../dao/mapper/AlertGroupMapper.java | 6 +++++ .../dao/mapper/AlertGroupMapper.xml | 7 ++++++ 5 files changed, 38 insertions(+), 1 deletion(-) diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java index 04ef02303d..6605154e42 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java @@ -290,6 +290,7 @@ public enum Status { QUERY_ALL_ALERT_PLUGIN_INSTANCE_ERROR(110009, "query all alert plugin instance error", "查询所有告警实例失败"), PLUGIN_INSTANCE_ALREADY_EXIT(110010,"plugin instance already exit","该告警插件实例已存在"), LIST_PAGING_ALERT_PLUGIN_INSTANCE_ERROR(110011,"query plugin instance page error","分页查询告警实例失败"), + DELETE_ALERT_PLUGIN_INSTANCE_ERROR_HAS_ALERT_GROUP_ASSOCIATED(110012,"failed to delete the alert instance, there is an alarm group associated with this alert instance","删除告警实例失败,存在与此告警实例关联的警报组") ; diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AlertPluginInstanceServiceImpl.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AlertPluginInstanceServiceImpl.java index 8004a90fae..d48de39d6d 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AlertPluginInstanceServiceImpl.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AlertPluginInstanceServiceImpl.java @@ -27,13 +27,16 @@ import org.apache.dolphinscheduler.common.utils.CollectionUtils; import org.apache.dolphinscheduler.dao.entity.AlertPluginInstance; import org.apache.dolphinscheduler.dao.entity.PluginDefine; import org.apache.dolphinscheduler.dao.entity.User; +import org.apache.dolphinscheduler.dao.mapper.AlertGroupMapper; import org.apache.dolphinscheduler.dao.mapper.AlertPluginInstanceMapper; import org.apache.dolphinscheduler.dao.mapper.PluginDefineMapper; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; @@ -56,6 +59,9 @@ public class AlertPluginInstanceServiceImpl extends BaseService implements Alert @Autowired private PluginDefineMapper pluginDefineMapper; + @Autowired + private AlertGroupMapper alertGroupMapper; + /** * creat alert plugin instance * @@ -121,6 +127,12 @@ public class AlertPluginInstanceServiceImpl extends BaseService implements Alert @Override public Map delete(User loginUser, int id) { Map result = new HashMap<>(); + //check if there is an associated alert group + boolean hasAssociatedAlertGroup = checkHasAssociatedAlertGroup(String.valueOf(id)); + if (hasAssociatedAlertGroup) { + putMsg(result, Status.DELETE_ALERT_PLUGIN_INSTANCE_ERROR_HAS_ALERT_GROUP_ASSOCIATED); + } + int i = alertPluginInstanceMapper.deleteById(id); if (i > 0) { putMsg(result, Status.SUCCESS); @@ -205,4 +217,14 @@ public class AlertPluginInstanceServiceImpl extends BaseService implements Alert return alertPluginInstanceVOS; } + + private boolean checkHasAssociatedAlertGroup(String id) { + List idsList = alertGroupMapper.queryInstanceIdsList(); + if (CollectionUtils.isEmpty(idsList)) { + return false; + } + Optional first = idsList.stream().filter(k -> Arrays.asList(k.split(",")).contains(id)).findFirst(); + return first.isPresent(); + } + } diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/AlertPluginInstance.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/AlertPluginInstance.java index 5993697a56..202c06bf00 100644 --- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/AlertPluginInstance.java +++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/AlertPluginInstance.java @@ -19,6 +19,7 @@ package org.apache.dolphinscheduler.dao.entity; import java.util.Date; +import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -39,7 +40,7 @@ public class AlertPluginInstance { /** * plugin_define_id */ - @TableField("plugin_define_id") + @TableField(value = "plugin_define_id", updateStrategy = FieldStrategy.NEVER) private int pluginDefineId; /** diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.java index b206a787b6..ebfa5b42ec 100644 --- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.java +++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.java @@ -61,6 +61,12 @@ public interface AlertGroupMapper extends BaseMapper { */ List queryAllGroupList(); + /** + * query instance ids All + * @return list + */ + List queryInstanceIdsList(); + /** * queryAlertGroupInstanceIdsById * @param alertGroupId diff --git a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.xml b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.xml index e60dedfd6c..90fd8a72a7 100644 --- a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.xml +++ b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.xml @@ -52,6 +52,13 @@ order by update_time desc + +