From 6dfa64c44a2f7b748b2f9c2a1cd2c48af8f315d8 Mon Sep 17 00:00:00 2001 From: "Jan N. Klug" Date: Sat, 11 Nov 2023 15:31:02 +0100 Subject: [PATCH 1/2] [influxdb] Improve connection handling Especially for InfluxDB2 the connection check was not properly implemented. It only checked if a connections was ever successfully established. Since we removed the full crash when a write error occured, this lead to a situation where a broken connection was not detected. A ping is now implemented and also a failed write results in a disconnect. Signed-off-by: Jan N. Klug --- .../persistence/influxdb/InfluxDBPersistenceService.java | 1 + .../influxdb/internal/influx2/InfluxDB2RepositoryImpl.java | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/bundles/org.openhab.persistence.influxdb/src/main/java/org/openhab/persistence/influxdb/InfluxDBPersistenceService.java b/bundles/org.openhab.persistence.influxdb/src/main/java/org/openhab/persistence/influxdb/InfluxDBPersistenceService.java index b2f66ecf7ec91..45f31c3edac74 100644 --- a/bundles/org.openhab.persistence.influxdb/src/main/java/org/openhab/persistence/influxdb/InfluxDBPersistenceService.java +++ b/bundles/org.openhab.persistence.influxdb/src/main/java/org/openhab/persistence/influxdb/InfluxDBPersistenceService.java @@ -285,6 +285,7 @@ private void commit() { if (!influxDBRepository.write(points)) { logger.warn("Re-queuing {} elements, failed to write batch.", points.size()); pointsQueue.addAll(points); + influxDBRepository.disconnect(); } else { logger.trace("Wrote {} elements to database", points.size()); } diff --git a/bundles/org.openhab.persistence.influxdb/src/main/java/org/openhab/persistence/influxdb/internal/influx2/InfluxDB2RepositoryImpl.java b/bundles/org.openhab.persistence.influxdb/src/main/java/org/openhab/persistence/influxdb/internal/influx2/InfluxDB2RepositoryImpl.java index 862ecf4c2ba31..75afbdcbd8c8c 100644 --- a/bundles/org.openhab.persistence.influxdb/src/main/java/org/openhab/persistence/influxdb/internal/influx2/InfluxDB2RepositoryImpl.java +++ b/bundles/org.openhab.persistence.influxdb/src/main/java/org/openhab/persistence/influxdb/internal/influx2/InfluxDB2RepositoryImpl.java @@ -25,8 +25,10 @@ import java.util.Optional; import java.util.stream.Stream; +import com.influxdb.client.domain.HealthCheck; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; +import org.influxdb.InfluxDB; import org.influxdb.InfluxDBIOException; import org.openhab.core.persistence.FilterCriteria; import org.openhab.persistence.influxdb.internal.FilterCriteriaQueryCreator; @@ -76,7 +78,8 @@ public InfluxDB2RepositoryImpl(InfluxDBConfiguration configuration, @Override public boolean isConnected() { - return client != null; + InfluxDBClient client = this.client; + return client != null && client.health().getStatus() == HealthCheck.StatusEnum.PASS; } @Override From 9d42c09ad787a90516027f9678b10064258acb61 Mon Sep 17 00:00:00 2001 From: "Jan N. Klug" Date: Sat, 11 Nov 2023 17:02:44 +0100 Subject: [PATCH 2/2] spotless Signed-off-by: Jan N. Klug --- .../influxdb/internal/influx2/InfluxDB2RepositoryImpl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bundles/org.openhab.persistence.influxdb/src/main/java/org/openhab/persistence/influxdb/internal/influx2/InfluxDB2RepositoryImpl.java b/bundles/org.openhab.persistence.influxdb/src/main/java/org/openhab/persistence/influxdb/internal/influx2/InfluxDB2RepositoryImpl.java index 75afbdcbd8c8c..77ef198009a2b 100644 --- a/bundles/org.openhab.persistence.influxdb/src/main/java/org/openhab/persistence/influxdb/internal/influx2/InfluxDB2RepositoryImpl.java +++ b/bundles/org.openhab.persistence.influxdb/src/main/java/org/openhab/persistence/influxdb/internal/influx2/InfluxDB2RepositoryImpl.java @@ -25,10 +25,8 @@ import java.util.Optional; import java.util.stream.Stream; -import com.influxdb.client.domain.HealthCheck; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.influxdb.InfluxDB; import org.influxdb.InfluxDBIOException; import org.openhab.core.persistence.FilterCriteria; import org.openhab.persistence.influxdb.internal.FilterCriteriaQueryCreator; @@ -46,6 +44,7 @@ import com.influxdb.client.InfluxDBClientOptions; import com.influxdb.client.QueryApi; import com.influxdb.client.WriteApi; +import com.influxdb.client.domain.HealthCheck; import com.influxdb.client.domain.Ready; import com.influxdb.client.domain.WritePrecision; import com.influxdb.client.write.Point;