}
long start = 0L;
- long end = filter.getEndDate() == null ? System.currentTimeMillis() / 1000
+ // set end to {@link Instant#MAX} instead of current timestamp to enable requesting future time ranges including
+ // boundary values via REST API
+ // see discussion in https://github.com/openhab/openhab-addons/pull/14238
+ long end = filter.getEndDate() == null ? Instant.MAX.getEpochSecond()
: filter.getEndDate().toInstant().getEpochSecond();
try {
start = end;
}
} else {
- throw new UnsupportedOperationException("rrd4j does not allow querys without a begin date, "
- + "unless order is descending and a single value is requested");
+ throw new UnsupportedOperationException(
+ "rrd4j does not allow querys without a begin date, unless order is descending and a single value is requested");
}
} else {
start = filter.getBeginDate().toInstant().getEpochSecond();
}
+ // do not call method {@link RrdDb#createFetchRequest(ConsolFun, long, long, long)} if start > end to avoid
+ // an IAE to be thrown
+ if (start > end) {
+ logger.warn("Could not query rrd4j database for item '{}': start ({}) > end ({})", itemName, start,
+ end);
+ return List.of();
+ }
+
FetchRequest request = db.createFetchRequest(getConsolidationFunction(db), start, end, 1);
FetchData result = request.fetchData();