From 56ee5d873a26a019942b52791e8ae53a15df35b2 Mon Sep 17 00:00:00 2001 From: Carpe-Wang <78642589+Carpe-Wang@users.noreply.github.com> Date: Wed, 24 Jan 2024 19:02:46 +0800 Subject: [PATCH] refactor tdengine store code, auto close resource (#1513) Co-authored-by: Carpe-Wang --- .../store/HistoryTdEngineDataStorage.java | 38 +++++++------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/warehouse/src/main/java/org/dromara/hertzbeat/warehouse/store/HistoryTdEngineDataStorage.java b/warehouse/src/main/java/org/dromara/hertzbeat/warehouse/store/HistoryTdEngineDataStorage.java index 1037dab111e..f1d29347862 100644 --- a/warehouse/src/main/java/org/dromara/hertzbeat/warehouse/store/HistoryTdEngineDataStorage.java +++ b/warehouse/src/main/java/org/dromara/hertzbeat/warehouse/store/HistoryTdEngineDataStorage.java @@ -231,25 +231,23 @@ public void destroy() { hikariDataSource.close(); } } - + @Override public Map> getHistoryMetricData(Long monitorId, String app, String metrics, String metric, String label, String history) { String table = app + "_" + metrics + "_" + monitorId; String selectSql = label == null ? String.format(QUERY_HISTORY_SQL, metric, table, history) : String.format(QUERY_HISTORY_WITH_INSTANCE_SQL, metric, table, label, history); log.debug(selectSql); - Connection connection = null; Map> instanceValuesMap = new HashMap<>(8); - try { - if (!serverAvailable) { - 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(); - Statement statement = connection.createStatement(); - ResultSet resultSet = statement.executeQuery(selectSql); + if (!serverAvailable) { + log.error("\n\t---------------TdEngine Init Failed---------------\n" + + "\t--------------Please Config Tdengine--------------\n" + + "\t----------Can Not Use Metric History Now----------\n"); + return instanceValuesMap; + } + try (Connection connection = hikariDataSource.getConnection(); + Statement statement = connection.createStatement(); + ResultSet resultSet = statement.executeQuery(selectSql)) { while (resultSet.next()) { Timestamp ts = resultSet.getTimestamp(1); if (ts == null) { @@ -265,22 +263,14 @@ public Map> getHistoryMetricData(Long monitorId, String app, List valueList = instanceValuesMap.computeIfAbsent(instanceValue, k -> new LinkedList<>()); valueList.add(new Value(strValue, ts.getTime() / 100 * 100)); } - resultSet.close(); return instanceValuesMap; } catch (SQLException sqlException) { - String msg = sqlException.getMessage(); - if (msg != null && !msg.contains(TABLE_NOT_EXIST)) { - log.warn(sqlException.getMessage()); - } + String msg = sqlException.getMessage(); + if (msg != null && !msg.contains(TABLE_NOT_EXIST)) { + log.warn(sqlException.getMessage()); + } } catch (Exception e) { log.error(e.getMessage(), e); - } finally { - try { - assert connection != null; - connection.close(); - } catch (Exception e) { - log.error(e.getMessage()); - } } return instanceValuesMap; }