import org.eclipse.jdt.annotation.Nullable;
import org.influxdb.InfluxDB;
import org.influxdb.InfluxDBFactory;
+import org.influxdb.InfluxDBIOException;
import org.influxdb.dto.BatchPoints;
import org.influxdb.dto.Point;
import org.influxdb.dto.Pong;
BatchPoints batchPoints = BatchPoints.database(configuration.getDatabaseName())
.retentionPolicy(configuration.getRetentionPolicy()).points(points).build();
currentClient.write(batchPoints);
- } catch (InfluxException e) {
+ } catch (InfluxException | InfluxDBIOException e) {
logger.debug("Writing to database failed", e);
return false;
}
@Override
public List<InfluxRow> query(FilterCriteria filter, String retentionPolicy) {
- final InfluxDB currentClient = client;
- if (currentClient != null) {
- String query = queryCreator.createQuery(filter, retentionPolicy);
- logger.trace("Query {}", query);
- Query parsedQuery = new Query(query, configuration.getDatabaseName());
- List<QueryResult.Result> results = currentClient.query(parsedQuery, TimeUnit.MILLISECONDS).getResults();
- return convertClientResultToRepository(results);
- } else {
- logger.warn("Returning empty list because queryAPI isn't present");
+ try {
+ final InfluxDB currentClient = client;
+ if (currentClient != null) {
+ String query = queryCreator.createQuery(filter, retentionPolicy);
+ logger.trace("Query {}", query);
+ Query parsedQuery = new Query(query, configuration.getDatabaseName());
+ List<QueryResult.Result> results = currentClient.query(parsedQuery, TimeUnit.MILLISECONDS).getResults();
+ return convertClientResultToRepository(results);
+ } else {
+ throw new InfluxException("API not present");
+ }
+ } catch (InfluxException | InfluxDBIOException e) {
+ logger.warn("Failed to execute query '{}': {}", filter, e.getMessage());
return List.of();
}
}
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
+import org.influxdb.InfluxDBIOException;
import org.openhab.core.persistence.FilterCriteria;
import org.openhab.persistence.influxdb.internal.FilterCriteriaQueryCreator;
import org.openhab.persistence.influxdb.internal.InfluxDBConfiguration;
List<Point> clientPoints = influxPoints.stream().map(this::convertPointToClientFormat)
.filter(Optional::isPresent).map(Optional::get).toList();
currentWriteAPI.writePoints(clientPoints);
- } catch (InfluxException e) {
+ } catch (InfluxException | InfluxDBIOException e) {
logger.debug("Writing to database failed", e);
return false;
}
try {
deleteAPI.delete(start, stop, predicate, configuration.getRetentionPolicy(),
configuration.getDatabaseName());
- } catch (InfluxException e) {
+ } catch (InfluxException | InfluxDBIOException e) {
logger.debug("Deleting from database failed", e);
return false;
}
@Override
public List<InfluxRow> query(FilterCriteria filter, String retentionPolicy) {
- final QueryApi currentQueryAPI = queryAPI;
- if (currentQueryAPI != null) {
- String query = queryCreator.createQuery(filter, retentionPolicy);
- logger.trace("Query {}", query);
- List<FluxTable> clientResult = currentQueryAPI.query(query);
- return clientResult.stream().flatMap(this::mapRawResultToHistoric).toList();
- } else {
- logger.warn("Returning empty list because queryAPI isn't present");
+ try {
+ final QueryApi currentQueryAPI = queryAPI;
+ if (currentQueryAPI != null) {
+ String query = queryCreator.createQuery(filter, retentionPolicy);
+ logger.trace("Query {}", query);
+ List<FluxTable> clientResult = currentQueryAPI.query(query);
+ return clientResult.stream().flatMap(this::mapRawResultToHistoric).toList();
+ } else {
+ throw new InfluxException("API not present");
+ }
+ } catch (InfluxException | InfluxDBIOException e) {
+ logger.warn("Failed to execute query '{}': {}", filter, e.getMessage());
return List.of();
}
}