From 95f8d527d78771ab9a79ebda6e9a9f417cd54118 Mon Sep 17 00:00:00 2001 From: PLeusmann Date: Wed, 17 Jan 2024 21:05:10 +0100 Subject: [PATCH] [influxdb] Add compatibility with InfluxDB Cloud Serverless (#16151) * Use influx client 4.3.0 Signed-off-by: Philipp Leusmann * cleanup Signed-off-by: Philipp Leusmann * changed log level to debug Signed-off-by: Philipp Leusmann * spotless reformat Signed-off-by: Philipp Leusmann --------- Signed-off-by: Philipp Leusmann Co-authored-by: Philipp Leusmann --- .../org.openhab.persistence.influxdb/pom.xml | 12 +++++++++++- .../influx2/InfluxDB2RepositoryImpl.java | 18 +++++++++++++----- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/bundles/org.openhab.persistence.influxdb/pom.xml b/bundles/org.openhab.persistence.influxdb/pom.xml index 9c5fa79944..114840e8f8 100644 --- a/bundles/org.openhab.persistence.influxdb/pom.xml +++ b/bundles/org.openhab.persistence.influxdb/pom.xml @@ -20,7 +20,7 @@ 3.14.9 2.7.2 - 1.15.0 + 4.3.0 2.21 @@ -31,6 +31,16 @@ influxdb-client-java ${influx2.version} + + com.influxdb + influxdb-client-utils + ${influx2.version} + + + com.squareup.retrofit2 + adapter-rxjava2 + ${retrofit.version} + com.influxdb influxdb-client-core 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 beb18ee43f..898f030346 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 @@ -44,7 +44,6 @@ import com.influxdb.client.InfluxDBClientFactory; 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; @@ -78,7 +77,7 @@ public class InfluxDB2RepositoryImpl implements InfluxDBRepository { @Override public boolean isConnected() { InfluxDBClient client = this.client; - return client != null && client.health().getStatus() == HealthCheck.StatusEnum.PASS; + return client != null && client.ping(); } @Override @@ -97,9 +96,10 @@ public class InfluxDB2RepositoryImpl implements InfluxDBRepository { this.client = createdClient; queryAPI = createdClient.getQueryApi(); - writeAPI = createdClient.getWriteApi(); + writeAPI = createdClient.makeWriteApi(); deleteAPI = createdClient.getDeleteApi(); - logger.debug("Successfully connected to InfluxDB. Instance ready={}", createdClient.ready()); + + logger.debug("Successfully connected to InfluxDB. Instance pingable={}", createdClient.ping()); return checkConnectionStatus(); } @@ -117,8 +117,16 @@ public class InfluxDB2RepositoryImpl implements InfluxDBRepository { public boolean checkConnectionStatus() { final InfluxDBClient currentClient = client; if (currentClient != null) { + boolean isUp = false; Ready ready = currentClient.ready(); - boolean isUp = ready != null && ready.getStatus() == Ready.StatusEnum.READY; + if (ready != null) { + isUp = ready.getStatus() == Ready.StatusEnum.READY; + } else { + logger.debug( + "Failure resolving database readiness. Falling back to ping check. This is normal when using InfluxDB Cloud Serverless."); + isUp = currentClient.ping(); + } + if (isUp) { logger.debug("database status is OK"); } else { -- 2.47.3