11package com .databricks .jdbc .telemetry ;
22
33import com .databricks .jdbc .client .DatabricksHttpException ;
4+ import com .databricks .jdbc .commons .LogLevel ;
45import com .databricks .jdbc .commons .util .DefaultHttpClientUtil ;
6+ import com .databricks .jdbc .commons .util .LoggingUtil ;
57import com .databricks .jdbc .core .DatabricksSQLException ;
68import com .databricks .jdbc .driver .IDatabricksConnectionContext ;
79import com .fasterxml .jackson .databind .ObjectMapper ;
1820import org .apache .http .impl .client .DefaultHttpClient ;
1921import 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