Просмотр исходного кода

[manager,alerter]fix监控删除后告警定义关联未删除

tomsun28 4 лет назад
Родитель
Сommit
ba28940ee8

+ 12 - 0
alerter/src/main/java/com/usthe/alert/dao/AlertDefineBindDao.java

@@ -20,6 +20,18 @@ public interface AlertDefineBindDao extends JpaRepository<AlertDefineMonitorBind
     void deleteAlertDefineBindsByAlertDefineIdEquals(Long alertDefineId);
 
     /**
+     * 根据监控ID删除告警定义监控关联
+     * @param monitorId 监控ID
+     */
+    void deleteAlertDefineMonitorBindsByMonitorIdEquals(Long monitorId);
+
+    /**
+     * 根据监控ID列表删除告警定义监控关联
+     * @param monitorIds 监控ID列表
+     */
+    void deleteAlertDefineMonitorBindsByMonitorIdIn(List<Long> monitorIds);
+
+    /**
      * 根据告警定义ID查询监控关联信息
      * @param alertDefineId 告警定义ID
      * @return 关联监控信息

+ 7 - 0
manager/src/main/java/com/usthe/manager/service/impl/MonitorServiceImpl.java

@@ -1,5 +1,6 @@
 package com.usthe.manager.service.impl;
 
+import com.usthe.alert.dao.AlertDefineBindDao;
 import com.usthe.collector.dispatch.entrance.internal.CollectJobService;
 import com.usthe.common.entity.job.Configmap;
 import com.usthe.common.entity.job.Job;
@@ -60,6 +61,9 @@ public class MonitorServiceImpl implements MonitorService {
     @Autowired
     private ParamDao paramDao;
 
+    @Autowired
+    private AlertDefineBindDao alertDefineBindDao;
+
     @Override
     @Transactional(readOnly = true)
     public void detectMonitor(Monitor monitor, List<Param> params) throws MonitorDetectException {
@@ -279,6 +283,7 @@ public class MonitorServiceImpl implements MonitorService {
             Monitor monitor = monitorOptional.get();
             monitorDao.deleteById(id);
             paramDao.deleteParamsByMonitorId(id);
+            alertDefineBindDao.deleteAlertDefineMonitorBindsByMonitorIdEquals(id);
             collectJobService.cancelAsyncCollectJob(monitor.getJobId());
         }
     }
@@ -290,6 +295,8 @@ public class MonitorServiceImpl implements MonitorService {
         if (monitors != null) {
             monitorDao.deleteAll(monitors);
             paramDao.deleteParamsByMonitorIdIn(ids);
+            alertDefineBindDao.deleteAlertDefineMonitorBindsByMonitorIdIn(monitors.stream()
+                    .map(Monitor::getId).collect(Collectors.toList()));
             for (Monitor monitor : monitors) {
                 collectJobService.cancelAsyncCollectJob(monitor.getJobId());
             }