diff --git a/pom.xml b/pom.xml index d6ec3d59cc9..47e9a8d93ef 100644 --- a/pom.xml +++ b/pom.xml @@ -134,7 +134,7 @@ 28.2-jre 4.5.11 4.4.13 - 2.17 + 2.20 2.10.3 1.9.3 0.17 diff --git a/server/src/main/java/com/cloud/server/StatsCollector.java b/server/src/main/java/com/cloud/server/StatsCollector.java index 570942747cc..422d2dfc2d5 100644 --- a/server/src/main/java/com/cloud/server/StatsCollector.java +++ b/server/src/main/java/com/cloud/server/StatsCollector.java @@ -1334,21 +1334,25 @@ public class StatsCollector extends ManagerBase implements ComponentMethodInterc protected void sendMetricsToInfluxdb(Map metrics) { InfluxDB influxDbConnection = createInfluxDbConnection(); - Pong response = influxDbConnection.ping(); - if (response.getVersion().equalsIgnoreCase("unknown")) { - throw new CloudRuntimeException(String.format("Cannot ping influxdb host %s:%s.", externalStatsHost, externalStatsPort)); + try { + Pong response = influxDbConnection.ping(); + if (response.getVersion().equalsIgnoreCase("unknown")) { + throw new CloudRuntimeException(String.format("Cannot ping influxdb host %s:%s.", externalStatsHost, externalStatsPort)); + } + + Collection metricsObjects = metrics.values(); + List points = new ArrayList<>(); + + s_logger.debug(String.format("Sending stats to %s host %s:%s", externalStatsType, externalStatsHost, externalStatsPort)); + + for (Object metricsObject : metricsObjects) { + Point vmPoint = creteInfluxDbPoint(metricsObject); + points.add(vmPoint); + } + writeBatches(influxDbConnection, databaseName, points); + } finally { + influxDbConnection.close(); } - - Collection metricsObjects = metrics.values(); - List points = new ArrayList<>(); - - s_logger.debug(String.format("Sending stats to %s host %s:%s", externalStatsType, externalStatsHost, externalStatsPort)); - - for (Object metricsObject : metricsObjects) { - Point vmPoint = creteInfluxDbPoint(metricsObject); - points.add(vmPoint); - } - writeBatches(influxDbConnection, databaseName, points); } /** @@ -1521,7 +1525,9 @@ public class StatsCollector extends ManagerBase implements ComponentMethodInterc */ protected void writeBatches(InfluxDB influxDbConnection, String dbName, List points) { BatchPoints batchPoints = BatchPoints.database(dbName).build(); - influxDbConnection.enableBatch(BatchOptions.DEFAULTS); + if(!influxDbConnection.isBatchEnabled()){ + influxDbConnection.enableBatch(BatchOptions.DEFAULTS); + } for (Point point : points) { batchPoints.point(point);