[hotfix] Use try-with-resource way to fix the potential InfluxDB connection leak in DataExplorerQueryV4 (#1350)
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/v4/query/DataExplorerQueryV4.java b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/v4/query/DataExplorerQueryV4.java
index aea334b..22add82 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/v4/query/DataExplorerQueryV4.java
+++ b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/v4/query/DataExplorerQueryV4.java
@@ -92,50 +92,36 @@
}
public SpQueryResult executeQuery(boolean ignoreMissingValues) throws RuntimeException {
- InfluxDB influxDB = InfluxClientProvider.getInfluxDBClient();
- List<QueryElement<?>> queryElements = getQueryElements();
+ try (final InfluxDB influxDB = InfluxClientProvider.getInfluxDBClient()) {
+ List<QueryElement<?>> queryElements = getQueryElements();
- if (this.maximumAmountOfEvents != -1) {
- QueryBuilder countQueryBuilder = QueryBuilder.create(getDatabaseName());
- Query countQuery = countQueryBuilder.build(queryElements, true);
- QueryResult countQueryResult = influxDB.query(countQuery);
- Double amountOfQueryResults = getAmountOfResults(countQueryResult);
- if (amountOfQueryResults > this.maximumAmountOfEvents) {
- SpQueryResult tooMuchData = new SpQueryResult();
- tooMuchData.setSpQueryStatus(SpQueryStatus.TOO_MUCH_DATA);
- tooMuchData.setTotal(amountOfQueryResults.intValue());
- influxDB.close();
- return tooMuchData;
+ if (this.maximumAmountOfEvents != -1) {
+ QueryBuilder countQueryBuilder = QueryBuilder.create(getDatabaseName());
+ Query countQuery = countQueryBuilder.build(queryElements, true);
+ QueryResult countQueryResult = influxDB.query(countQuery);
+ Double amountOfQueryResults = getAmountOfResults(countQueryResult);
+
+ if (amountOfQueryResults > this.maximumAmountOfEvents) {
+ SpQueryResult tooMuchData = new SpQueryResult();
+ tooMuchData.setSpQueryStatus(SpQueryStatus.TOO_MUCH_DATA);
+ tooMuchData.setTotal(amountOfQueryResults.intValue());
+ return tooMuchData;
+ }
}
+
+ QueryBuilder queryBuilder = QueryBuilder.create(getDatabaseName());
+ Query query = queryBuilder.build(queryElements, false);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Data Lake Query (database:" + query.getDatabase() + "): " + query.getCommand());
+ }
+
+ QueryResult result = influxDB.query(query);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Data Lake Query Result: " + result.toString());
+ }
+
+ return postQuery(result, ignoreMissingValues);
}
-
- QueryBuilder queryBuilder = QueryBuilder.create(getDatabaseName());
- Query query = queryBuilder.build(queryElements, false);
- LOG.debug("Data Lake Query (database:" + query.getDatabase() + "): " + query.getCommand());
-
- QueryResult result = influxDB.query(query);
- LOG.debug("Data Lake Query Result: " + result.toString());
-
- SpQueryResult dataResult = postQuery(result, ignoreMissingValues);
-
- influxDB.close();
- return dataResult;
- }
-
- public SpQueryResult executeQuery(Query query, boolean ignoreMissingValues) {
- InfluxDB influxDB = InfluxClientProvider.getInfluxDBClient();
- var dataResult = executeQuery(influxDB, query, ignoreMissingValues);
- influxDB.close();
-
- return dataResult;
- }
-
- public SpQueryResult executeQuery(InfluxDB influxDB,
- Query query,
- boolean ignoreMissingValues) {
- QueryResult result = influxDB.query(query);
-
- return postQuery(result, ignoreMissingValues);
}
private double getAmountOfResults(QueryResult countQueryResult) {