This is an automated email from the ASF dual-hosted git repository.

kirs pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/dev by this push:
     new 0f3eed9  [Fix-5386][Alert] Fix ERROR: relation t_ds_plugin_define does 
not exist (#5387)
0f3eed9 is described below

commit 0f3eed9d00e6b688342c7885b0d2fc2528481ce0
Author: Shiwen Cheng <[email protected]>
AuthorDate: Thu Apr 29 16:17:01 2021 +0800

    [Fix-5386][Alert] Fix ERROR: relation t_ds_plugin_define does not exist 
(#5387)
---
 .../apache/dolphinscheduler/alert/AlertServer.java | 23 +++++++++++++++++-----
 .../dolphinscheduler/alert/AlertServerTest.java    |  7 ++-----
 .../org/apache/dolphinscheduler/dao/PluginDao.java |  9 +++++++++
 .../dao/mapper/PluginDefineMapper.java             |  7 +++++++
 .../dao/mapper/PluginDefineMapper.xml              |  4 ++++
 5 files changed, 40 insertions(+), 10 deletions(-)

diff --git 
a/dolphinscheduler-alert/src/main/java/org/apache/dolphinscheduler/alert/AlertServer.java
 
b/dolphinscheduler-alert/src/main/java/org/apache/dolphinscheduler/alert/AlertServer.java
index d0fb66a..f0ab241 100644
--- 
a/dolphinscheduler-alert/src/main/java/org/apache/dolphinscheduler/alert/AlertServer.java
+++ 
b/dolphinscheduler-alert/src/main/java/org/apache/dolphinscheduler/alert/AlertServer.java
@@ -30,6 +30,7 @@ import org.apache.dolphinscheduler.common.thread.Stopper;
 import org.apache.dolphinscheduler.common.utils.PropertyUtils;
 import org.apache.dolphinscheduler.dao.AlertDao;
 import org.apache.dolphinscheduler.dao.DaoFactory;
+import org.apache.dolphinscheduler.dao.PluginDao;
 import org.apache.dolphinscheduler.dao.entity.Alert;
 import org.apache.dolphinscheduler.remote.NettyRemotingServer;
 import org.apache.dolphinscheduler.remote.command.CommandType;
@@ -47,7 +48,14 @@ import com.google.common.collect.ImmutableList;
  * alert of start
  */
 public class AlertServer {
+
     private static final Logger logger = 
LoggerFactory.getLogger(AlertServer.class);
+
+    /**
+     * Plugin Dao
+     */
+    private PluginDao pluginDao = DaoFactory.getDaoInstance(PluginDao.class);
+
     /**
      * Alert Dao
      */
@@ -55,8 +63,6 @@ public class AlertServer {
 
     private AlertSender alertSender;
 
-    private static AlertServer instance;
-
     private AlertPluginManager alertPluginManager;
 
     private DolphinPluginManagerConfig alertPluginManagerConfig;
@@ -78,13 +84,19 @@ public class AlertServer {
 
     public static final AlertServer getInstance() {
         return AlertServerHolder.INSTANCE;
-
     }
 
     private AlertServer() {
 
     }
 
+    private void checkTable() {
+        if (!pluginDao.checkPluginDefineTableExist()) {
+            logger.error("Plugin Define Table t_ds_plugin_define Not Exist . 
Please Create it First !");
+            System.exit(1);
+        }
+    }
+
     private void initPlugin() {
         alertPluginManager = new AlertPluginManager();
         alertPluginManagerConfig = new DolphinPluginManagerConfig();
@@ -101,7 +113,7 @@ public class AlertServer {
         try {
             alertPluginLoader.loadPlugins();
         } catch (Exception e) {
-            throw new RuntimeException("load Alert Plugin Failed !", e);
+            throw new RuntimeException("Load Alert Plugin Failed !", e);
         }
     }
 
@@ -128,7 +140,7 @@ public class AlertServer {
                 Thread.currentThread().interrupt();
             }
             if (alertPluginManager == null || 
alertPluginManager.getAlertChannelMap().size() == 0) {
-                logger.warn("No Alert Plugin . Can not send alert info. ");
+                logger.warn("No Alert Plugin . Cannot send alert info. ");
             } else {
                 List<Alert> alerts = alertDao.listWaitExecutionAlert();
                 alertSender = new AlertSender(alerts, alertDao, 
alertPluginManager);
@@ -142,6 +154,7 @@ public class AlertServer {
      */
     public void start() {
         PropertyUtils.loadPropertyFile(ALERT_PROPERTIES_PATH);
+        checkTable();
         initPlugin();
         initRemoteServer();
         logger.info("alert server ready start ");
diff --git 
a/dolphinscheduler-alert/src/test/java/org/apache/dolphinscheduler/alert/AlertServerTest.java
 
b/dolphinscheduler-alert/src/test/java/org/apache/dolphinscheduler/alert/AlertServerTest.java
index 662518b..1257856 100644
--- 
a/dolphinscheduler-alert/src/test/java/org/apache/dolphinscheduler/alert/AlertServerTest.java
+++ 
b/dolphinscheduler-alert/src/test/java/org/apache/dolphinscheduler/alert/AlertServerTest.java
@@ -56,6 +56,7 @@ public class AlertServerTest {
 
         PluginDao pluginDao = PowerMockito.mock(PluginDao.class);
         
PowerMockito.when(DaoFactory.getDaoInstance(PluginDao.class)).thenReturn(pluginDao);
+        
PowerMockito.when(pluginDao.checkPluginDefineTableExist()).thenReturn(true);
 
         AlertChannel alertChannelMock = PowerMockito.mock(AlertChannel.class);
 
@@ -80,15 +81,11 @@ public class AlertServerTest {
         AlertServer alertServer = AlertServer.getInstance();
         Assert.assertNotNull(alertServer);
 
-        new Thread(() -> {
-            alertServer.start();
-        })
-                .start();
+        new Thread(() -> alertServer.start()).start();
 
         Thread.sleep(5 * Constants.ALERT_SCAN_INTERVAL);
 
         alertServer.stop();
-
     }
 
 }
diff --git 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/PluginDao.java
 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/PluginDao.java
index 6463074..b6aa9e5 100644
--- 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/PluginDao.java
+++ 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/PluginDao.java
@@ -45,6 +45,15 @@ public class PluginDao extends AbstractBaseDao {
     }
 
     /**
+     * check plugin define table exist
+     *
+     * @return boolean
+     */
+    public boolean checkPluginDefineTableExist() {
+        return pluginDefineMapper.checkTableExist() > 0;
+    }
+
+    /**
      * add pluginDefine
      *
      * @param pluginDefine plugin define entiy
diff --git 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.java
 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.java
index e2d08b5..1ce7670 100644
--- 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.java
+++ 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.java
@@ -28,6 +28,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 public interface PluginDefineMapper extends BaseMapper<PluginDefine> {
 
     /**
+     * check table exist
+     *
+     * @return boolean
+     */
+    int checkTableExist();
+
+    /**
      * query all plugin define
      *
      * @return PluginDefine list
diff --git 
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.xml
 
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.xml
index 49abe7c..0a105ed 100644
--- 
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.xml
+++ 
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.xml
@@ -18,6 +18,10 @@
 
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"; >
 <mapper namespace="org.apache.dolphinscheduler.dao.mapper.PluginDefineMapper">
+    <select id="checkTableExist" resultType="int">
+        select count(*) from information_schema.TABLES where table_name = 
't_ds_plugin_define'
+    </select>
+
     <select id="queryAllPluginDefineList" 
resultType="org.apache.dolphinscheduler.dao.entity.PluginDefine">
         select *
         from t_ds_plugin_define

Reply via email to