You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampipes.apache.org by bo...@apache.org on 2023/02/27 19:56:40 UTC

[streampipes] branch dev updated: [hotfix] Use try-with-resource way to fix the potential InfluxDB connection leak in DataExplorerQueryV4 (#1350)

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

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


The following commit(s) were added to refs/heads/dev by this push:
     new 44017e066 [hotfix] Use try-with-resource way to fix the potential InfluxDB connection leak in DataExplorerQueryV4 (#1350)
44017e066 is described below

commit 44017e0663de0d8028d1507df6ec19b6fcd13b8d
Author: Steve Yurong Su <ro...@apache.org>
AuthorDate: Tue Feb 28 03:56:33 2023 +0800

    [hotfix] Use try-with-resource way to fix the potential InfluxDB connection leak in DataExplorerQueryV4 (#1350)
---
 .../dataexplorer/v4/query/DataExplorerQueryV4.java | 66 +++++++++-------------
 1 file changed, 26 insertions(+), 40 deletions(-)

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 aea334bf6..22add8267 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 class DataExplorerQueryV4 {
   }
 
   public SpQueryResult executeQuery(boolean ignoreMissingValues) throws RuntimeException {
-    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;
+    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());
+          return tooMuchData;
+        }
       }
-    }
-
-    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;
-  }
+      QueryBuilder queryBuilder = QueryBuilder.create(getDatabaseName());
+      Query query = queryBuilder.build(queryElements, false);
+      if (LOG.isDebugEnabled()) {
+        LOG.debug("Data Lake Query (database:" + query.getDatabase() + "): " + query.getCommand());
+      }
 
-  public SpQueryResult executeQuery(InfluxDB influxDB,
-                                    Query query,
-                                    boolean ignoreMissingValues) {
-    QueryResult result = influxDB.query(query);
+      QueryResult result = influxDB.query(query);
+      if (LOG.isDebugEnabled()) {
+        LOG.debug("Data Lake Query Result: " + result.toString());
+      }
 
-    return postQuery(result, ignoreMissingValues);
+      return postQuery(result, ignoreMissingValues);
+    }
   }
 
   private double getAmountOfResults(QueryResult countQueryResult) {