Browse Source

[Fix-5386][Alert] Fix ERROR: relation t_ds_plugin_define does not exist (#5387)

pull/3/MERGE
Shiwen Cheng 4 years ago committed by GitHub
parent
commit
0f3eed9d00
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 23
      dolphinscheduler-alert/src/main/java/org/apache/dolphinscheduler/alert/AlertServer.java
  2. 7
      dolphinscheduler-alert/src/test/java/org/apache/dolphinscheduler/alert/AlertServerTest.java
  3. 9
      dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/PluginDao.java
  4. 7
      dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.java
  5. 4
      dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.xml

23
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 ");

7
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();
}
}

9
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/PluginDao.java

@ -44,6 +44,15 @@ public class PluginDao extends AbstractBaseDao {
pluginDefineMapper = ConnectionFactory.getInstance().getMapper(PluginDefineMapper.class);
}
/**
* check plugin define table exist
*
* @return boolean
*/
public boolean checkPluginDefineTableExist() {
return pluginDefineMapper.checkTableExist() > 0;
}
/**
* add pluginDefine
*

7
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.java

@ -27,6 +27,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
*

4
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

Loading…
Cancel
Save