[warehouse]feature:make tdengine optional, not required (#62)

This commit is contained in:
tomsun28
2022-04-04 11:45:41 +08:00
committed by GitHub
parent cc92f82472
commit 2553c6f61e

View File

@@ -61,11 +61,11 @@ public class TdEngineDataStorage implements DisposableBean {
log.error("init error, please config Warehouse TdEngine props in application.yml"); log.error("init error, please config Warehouse TdEngine props in application.yml");
throw new IllegalArgumentException("please config Warehouse TdEngine props"); throw new IllegalArgumentException("please config Warehouse TdEngine props");
} }
initTdEngineDatasource(properties.getStore().getTdEngine()); boolean success = initTdEngineDatasource(properties.getStore().getTdEngine());
startStorageData(); startStorageData(success);
} }
private void initTdEngineDatasource(WarehouseProperties.StoreProperties.TdEngineProperties tdEngineProperties) { private boolean initTdEngineDatasource(WarehouseProperties.StoreProperties.TdEngineProperties tdEngineProperties) {
HikariConfig config = new HikariConfig(); HikariConfig config = new HikariConfig();
// jdbc properties // jdbc properties
config.setJdbcUrl(tdEngineProperties.getUrl()); config.setJdbcUrl(tdEngineProperties.getUrl());
@@ -84,16 +84,28 @@ public class TdEngineDataStorage implements DisposableBean {
config.setIdleTimeout(0); config.setIdleTimeout(0);
//validation query //validation query
config.setConnectionTestQuery("select server_status()"); config.setConnectionTestQuery("select server_status()");
this.hikariDataSource = new HikariDataSource(config); try {
this.hikariDataSource = new HikariDataSource(config);
} catch (Exception e) {
log.error("\n\t------------------WARN WARN WARN------------------\n" +
"\t---------------Init TdEngine Failed---------------\n" +
"\t---------------Init TdEngine Failed---------------\n" +
"\t--------------Please Config Tdengine--------------\n" +
"\t----------Can Not Use Metric History Now----------\n" +
"\t----------Can Not Use Metric History Now----------\n" +
"\t----------Can Not Use Metric History Now----------\n");
return false;
}
return true;
} }
private void startStorageData() { private void startStorageData(boolean consume) {
Runnable runnable = () -> { Runnable runnable = () -> {
Thread.currentThread().setName("warehouse-tdEngine-data-storage"); Thread.currentThread().setName("warehouse-tdEngine-data-storage");
while (!Thread.currentThread().isInterrupted()) { while (!Thread.currentThread().isInterrupted()) {
try { try {
CollectRep.MetricsData metricsData = dataExporter.pollPersistentStorageMetricsData(); CollectRep.MetricsData metricsData = dataExporter.pollPersistentStorageMetricsData();
if (metricsData != null) { if (consume && metricsData != null) {
saveData(metricsData); saveData(metricsData);
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
@@ -232,6 +244,12 @@ public class TdEngineDataStorage implements DisposableBean {
Connection connection = null; Connection connection = null;
Map<String, List<Value>> instanceValuesMap = new HashMap<>(8); Map<String, List<Value>> instanceValuesMap = new HashMap<>(8);
try { try {
if (hikariDataSource == null) {
log.error("\n\t---------------TdEngine Init Failed---------------\n" +
"\t--------------Please Config Tdengine--------------\n" +
"\t----------Can Not Use Metric History Now----------\n");
return instanceValuesMap;
}
connection = hikariDataSource.getConnection(); connection = hikariDataSource.getConnection();
Statement statement = connection.createStatement(); Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(selectSql); ResultSet resultSet = statement.executeQuery(selectSql);