Skip to content

Commit eb2b57f

Browse files
committed
implemented close() in DatabricksMetrics
1 parent 600e923 commit eb2b57f

File tree

2 files changed

+19
-24
lines changed

2 files changed

+19
-24
lines changed

src/main/java/com/databricks/jdbc/core/DatabricksSession.java

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import com.databricks.jdbc.core.types.CompressionType;
1313
import com.databricks.jdbc.core.types.ComputeResource;
1414
import com.databricks.jdbc.driver.IDatabricksConnectionContext;
15-
import com.databricks.jdbc.telemetry.DatabricksMetrics;
1615
import com.databricks.sdk.support.ToStringer;
1716
import com.google.common.annotations.VisibleForTesting;
1817
import java.util.HashMap;
@@ -149,27 +148,14 @@ public void open() throws DatabricksSQLException {
149148
@Override
150149
public void close() throws DatabricksSQLException {
151150
LoggingUtil.log(LogLevel.DEBUG, "public void close()");
152-
System.out.println("close() session");
153151
// TODO: check for any pending query executions
154152
synchronized (this) {
155153
if (isSessionOpen) {
156154
// TODO: handle closed connections by server
157155
databricksClient.deleteSession(this, computeResource);
158156
this.sessionInfo = null;
159157
this.isSessionOpen = false;
160-
161-
// Flush out metrics when connection is closed
162-
DatabricksMetrics metricsExporter = connectionContext.getMetricsExporter();
163-
if (metricsExporter != null) {
164-
try {
165-
metricsExporter.sendRequest(
166-
metricsExporter.getGaugeMetrics(), DatabricksMetrics.MetricsType.GAUGE);
167-
metricsExporter.sendRequest(
168-
metricsExporter.getCounterMetrics(), DatabricksMetrics.MetricsType.COUNTER);
169-
} catch (Exception e) {
170-
throw new RuntimeException("Failed to flush out metrics", e);
171-
}
172-
}
158+
this.connectionContext.getMetricsExporter().close();
173159
}
174160
}
175161
}

src/main/java/com/databricks/jdbc/telemetry/DatabricksMetrics.java

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.databricks.jdbc.telemetry;
22

33
import com.databricks.jdbc.client.DatabricksHttpException;
4+
import com.databricks.jdbc.commons.LogLevel;
45
import com.databricks.jdbc.commons.util.DefaultHttpClientUtil;
6+
import com.databricks.jdbc.commons.util.LoggingUtil;
57
import com.databricks.jdbc.core.DatabricksSQLException;
68
import com.databricks.jdbc.driver.IDatabricksConnectionContext;
79
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -18,7 +20,7 @@
1820
import org.apache.http.impl.client.DefaultHttpClient;
1921
import org.apache.http.util.EntityUtils;
2022

21-
public class DatabricksMetrics {
23+
public class DatabricksMetrics implements AutoCloseable {
2224
private final String URL =
2325
"https://aa87314c1e33d4c1f91a919f8cf9c4ba-387609431.us-west-2.elb.amazonaws.com:443/api/2.0/oss-sql-driver-telemetry/metrics";
2426
private final Map<String, Double> gaugeMetrics = new HashMap<>();
@@ -32,14 +34,6 @@ public class DatabricksMetrics {
3234
private String workspaceId = null;
3335
private DefaultHttpClient telemetryClient = null;
3436

35-
public Map<String, Double> getGaugeMetrics() {
36-
return gaugeMetrics;
37-
}
38-
39-
public Map<String, Double> getCounterMetrics() {
40-
return counterMetrics;
41-
}
42-
4337
private void setWorkspaceId(String workspaceId) {
4438
this.workspaceId = workspaceId;
4539
}
@@ -169,4 +163,19 @@ public void increment(String name, double value) {
169163
incCounterMetrics(name + "_" + workspaceId, value);
170164
if (!hasInitialExportOccurred) initialExport(counterMetrics, MetricsType.COUNTER);
171165
}
166+
167+
@Override
168+
public void close() {
169+
// Flush out metrics when connection is closed
170+
if (telemetryClient != null) {
171+
try {
172+
sendRequest(gaugeMetrics, DatabricksMetrics.MetricsType.GAUGE);
173+
sendRequest(counterMetrics, DatabricksMetrics.MetricsType.COUNTER);
174+
} catch (Exception e) {
175+
LoggingUtil.log(
176+
LogLevel.DEBUG,
177+
"Failed to export metrics when connection is closed. Error: " + e.getMessage());
178+
}
179+
}
180+
}
172181
}

0 commit comments

Comments
 (0)