This is an automated email from the ASF dual-hosted git repository. jfeinauer pushed a commit to branch bugfix/iotdb-grafana-boolean in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
commit a1c2b782c59cfdc7b1cdd5cf08c152bee55603bf Author: Julian Feinauer <[email protected]> AuthorDate: Sat May 2 09:47:35 2020 +0200 Added workaround when doing Aggregation over boolean Series. --- .../iotdb/web/grafana/dao/impl/BasicDaoImpl.java | 21 +++++++++++++++++++++ grafana/src/main/resources/application.properties | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/grafana/src/main/java/org/apache/iotdb/web/grafana/dao/impl/BasicDaoImpl.java b/grafana/src/main/java/org/apache/iotdb/web/grafana/dao/impl/BasicDaoImpl.java index 7af408f..d1574d8 100644 --- a/grafana/src/main/java/org/apache/iotdb/web/grafana/dao/impl/BasicDaoImpl.java +++ b/grafana/src/main/java/org/apache/iotdb/web/grafana/dao/impl/BasicDaoImpl.java @@ -98,8 +98,28 @@ public class BasicDaoImpl implements BasicDao { return (List<String>) jdbcTemplate.execute(connectionCallback); } + /** + * Note: If the query fails this could be due to AGGREGATIION like AVG on booleayn field. + * Thus, we then do a retry with FIRST aggregation. + * This should be solved better in the long run. + */ @Override public List<TimeValues> querySeries(String s, Pair<ZonedDateTime, ZonedDateTime> timeRange) { + try { + return querySeriesInternal(s, timeRange, function); + } catch (Exception e) { + logger.info("Execution failed, trying now with FIRST Function!"); + // Try it with FIRST + try { + return querySeriesInternal(s, timeRange, "FIRST"); + } catch (Exception e2) { + logger.warn("Even FIRST query did not succeed, returning NULL now", e2); + return null; + } + } + } + + public List<TimeValues> querySeriesInternal(String s, Pair<ZonedDateTime, ZonedDateTime> timeRange, String function) { Long from = zonedCovertToLong(timeRange.left); Long to = zonedCovertToLong(timeRange.right); final long hours = Duration.between(timeRange.left, timeRange.right).toHours(); @@ -126,6 +146,7 @@ public class BasicDaoImpl implements BasicDao { rows = jdbcTemplate.query(sql, new TimeValuesRowMapper(columnName)); } catch (Exception e) { logger.error(e.getMessage()); + throw new RuntimeException("Query did not sucees", e); } return rows; } diff --git a/grafana/src/main/resources/application.properties b/grafana/src/main/resources/application.properties index 7847a8a..eee8d0a 100644 --- a/grafana/src/main/resources/application.properties +++ b/grafana/src/main/resources/application.properties @@ -32,4 +32,4 @@ isDownSampling=true interval=1m # aggregation function to use to downsampling the data # COUNT, FIRST_VALUE, LAST_VALUE, MAX_TIME, MAX_VALUE, AVG, MIN_TIME, MIN_VALUE, NOW, SUM -function=avg \ No newline at end of file +function=AVG \ No newline at end of file
