Skip to content

Commit 9e2ada9

Browse files
committed
Add driver version support throughout telemetry system
Thread driverVersion parameter from connector through driver_integration, manager, client, and exporter for telemetry reporting. - Add driverVersion field to telemetryExporter struct - Update newTelemetryExporter signature to accept driverVersion - Update InitializeForConnection to accept and pass driverVersion - Update connector.go to pass c.cfg.DriverVersion - Update all test files to pass "test-version" parameter - Remove TODO comments for driver version support Signed-off-by: samikshya-chand_data <samikshya.chand@databricks.com>
1 parent 310e7f3 commit 9e2ada9

File tree

7 files changed

+26
-21
lines changed

7 files changed

+26
-21
lines changed

connector.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ func (c *connector) Connect(ctx context.Context) (driver.Conn, error) {
9292
conn.telemetry = telemetry.InitializeForConnection(
9393
ctx,
9494
c.cfg.Host,
95+
c.cfg.DriverVersion,
9596
c.client,
9697
enableTelemetry,
9798
)

telemetry/benchmark_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func BenchmarkInterceptor_Overhead_Enabled(b *testing.B) {
2020
}))
2121
defer server.Close()
2222

23-
exporter := newTelemetryExporter(server.URL, httpClient, cfg)
23+
exporter := newTelemetryExporter(server.URL, "test-version", httpClient, cfg)
2424
aggregator := newMetricsAggregator(exporter, cfg)
2525
defer aggregator.close(context.Background())
2626

@@ -48,7 +48,7 @@ func BenchmarkInterceptor_Overhead_Disabled(b *testing.B) {
4848
}))
4949
defer server.Close()
5050

51-
exporter := newTelemetryExporter(server.URL, httpClient, cfg)
51+
exporter := newTelemetryExporter(server.URL, "test-version", httpClient, cfg)
5252
aggregator := newMetricsAggregator(exporter, cfg)
5353
defer aggregator.close(context.Background())
5454

@@ -75,7 +75,7 @@ func BenchmarkAggregator_RecordMetric(b *testing.B) {
7575
}))
7676
defer server.Close()
7777

78-
exporter := newTelemetryExporter(server.URL, httpClient, cfg)
78+
exporter := newTelemetryExporter(server.URL, "test-version", httpClient, cfg)
7979
aggregator := newMetricsAggregator(exporter, cfg)
8080
defer aggregator.close(context.Background())
8181

@@ -105,7 +105,7 @@ func BenchmarkExporter_Export(b *testing.B) {
105105
}))
106106
defer server.Close()
107107

108-
exporter := newTelemetryExporter(server.URL, httpClient, cfg)
108+
exporter := newTelemetryExporter(server.URL, "test-version", httpClient, cfg)
109109

110110
ctx := context.Background()
111111
metrics := []*telemetryMetric{
@@ -292,7 +292,7 @@ func TestGracefulShutdown_FinalFlush(t *testing.T) {
292292
}))
293293
defer server.Close()
294294

295-
exporter := newTelemetryExporter(server.URL, httpClient, cfg)
295+
exporter := newTelemetryExporter(server.URL, "test-version", httpClient, cfg)
296296
aggregator := newMetricsAggregator(exporter, cfg)
297297

298298
// Record a metric

telemetry/client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ type telemetryClient struct {
3333
// newTelemetryClient creates a new telemetry client for the given host.
3434
func newTelemetryClient(host string, driverVersion string, httpClient *http.Client, cfg *Config) *telemetryClient {
3535
// Create exporter
36-
exporter := newTelemetryExporter(host, httpClient, cfg)
36+
exporter := newTelemetryExporter(host, driverVersion, httpClient, cfg)
3737

3838
// Create aggregator with exporter
3939
aggregator := newMetricsAggregator(exporter, cfg)

telemetry/driver_integration.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
// Parameters:
1515
// - ctx: Context for the initialization
1616
// - host: Databricks host
17+
// - driverVersion: Driver version string
1718
// - httpClient: HTTP client for making requests
1819
// - enableTelemetry: User opt-in flag (nil = unset, true = enable, false = disable)
1920
//
@@ -22,6 +23,7 @@ import (
2223
func InitializeForConnection(
2324
ctx context.Context,
2425
host string,
26+
driverVersion string,
2527
httpClient *http.Client,
2628
enableTelemetry *bool,
2729
) *Interceptor {
@@ -41,7 +43,7 @@ func InitializeForConnection(
4143

4244
// Get or create telemetry client for this host
4345
clientMgr := getClientManager()
44-
telemetryClient := clientMgr.getOrCreateClient(host, "", httpClient, cfg) // TODO: Add driver version support
46+
telemetryClient := clientMgr.getOrCreateClient(host, driverVersion, httpClient, cfg)
4547
if telemetryClient == nil {
4648
return nil
4749
}

telemetry/exporter.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
// telemetryExporter exports metrics to Databricks telemetry service.
1414
type telemetryExporter struct {
1515
host string
16+
driverVersion string
1617
httpClient *http.Client
1718
circuitBreaker *circuitBreaker
1819
cfg *Config
@@ -48,9 +49,10 @@ type exportedMetric struct {
4849
}
4950

5051
// newTelemetryExporter creates a new exporter.
51-
func newTelemetryExporter(host string, httpClient *http.Client, cfg *Config) *telemetryExporter {
52+
func newTelemetryExporter(host string, driverVersion string, httpClient *http.Client, cfg *Config) *telemetryExporter {
5253
return &telemetryExporter{
5354
host: host,
55+
driverVersion: driverVersion,
5456
httpClient: httpClient,
5557
circuitBreaker: getCircuitBreakerManager().getCircuitBreaker(host),
5658
cfg: cfg,

telemetry/exporter_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ func TestNewTelemetryExporter(t *testing.T) {
1616
httpClient := &http.Client{Timeout: 5 * time.Second}
1717
host := "test-host"
1818

19-
exporter := newTelemetryExporter(host, httpClient, cfg)
19+
exporter := newTelemetryExporter(host, "test-version", httpClient, cfg)
2020

2121
if exporter.host != host {
2222
t.Errorf("Expected host %s, got %s", host, exporter.host)
@@ -73,7 +73,7 @@ func TestExport_Success(t *testing.T) {
7373
httpClient := &http.Client{Timeout: 5 * time.Second}
7474

7575
// Use full server URL for testing
76-
exporter := newTelemetryExporter(server.URL, httpClient, cfg)
76+
exporter := newTelemetryExporter(server.URL, "test-version", httpClient, cfg)
7777

7878
metrics := []*telemetryMetric{
7979
{
@@ -113,7 +113,7 @@ func TestExport_RetryOn5xx(t *testing.T) {
113113
httpClient := &http.Client{Timeout: 5 * time.Second}
114114

115115
// Use full server URL for testing
116-
exporter := newTelemetryExporter(server.URL, httpClient, cfg)
116+
exporter := newTelemetryExporter(server.URL, "test-version", httpClient, cfg)
117117

118118
metrics := []*telemetryMetric{
119119
{
@@ -145,7 +145,7 @@ func TestExport_NonRetryable4xx(t *testing.T) {
145145
httpClient := &http.Client{Timeout: 5 * time.Second}
146146

147147
// Use full server URL for testing
148-
exporter := newTelemetryExporter(server.URL, httpClient, cfg)
148+
exporter := newTelemetryExporter(server.URL, "test-version", httpClient, cfg)
149149

150150
metrics := []*telemetryMetric{
151151
{
@@ -181,7 +181,7 @@ func TestExport_Retry429(t *testing.T) {
181181
httpClient := &http.Client{Timeout: 5 * time.Second}
182182

183183
// Use full server URL for testing
184-
exporter := newTelemetryExporter(server.URL, httpClient, cfg)
184+
exporter := newTelemetryExporter(server.URL, "test-version", httpClient, cfg)
185185

186186
metrics := []*telemetryMetric{
187187
{
@@ -211,7 +211,7 @@ func TestExport_CircuitBreakerOpen(t *testing.T) {
211211
httpClient := &http.Client{Timeout: 5 * time.Second}
212212

213213
// Use full server URL for testing
214-
exporter := newTelemetryExporter(server.URL, httpClient, cfg)
214+
exporter := newTelemetryExporter(server.URL, "test-version", httpClient, cfg)
215215

216216
// Open the circuit breaker by recording failures
217217
cb := exporter.circuitBreaker
@@ -334,7 +334,7 @@ func TestExport_ErrorSwallowing(t *testing.T) {
334334
httpClient := &http.Client{Timeout: 5 * time.Second}
335335

336336
// Use full server URL for testing
337-
exporter := newTelemetryExporter(server.URL, httpClient, cfg)
337+
exporter := newTelemetryExporter(server.URL, "test-version", httpClient, cfg)
338338

339339
metrics := []*telemetryMetric{
340340
{
@@ -370,7 +370,7 @@ func TestExport_ContextCancellation(t *testing.T) {
370370
httpClient := &http.Client{Timeout: 5 * time.Second}
371371

372372
// Use full server URL for testing
373-
exporter := newTelemetryExporter(server.URL, httpClient, cfg)
373+
exporter := newTelemetryExporter(server.URL, "test-version", httpClient, cfg)
374374

375375
metrics := []*telemetryMetric{
376376
{
@@ -403,7 +403,7 @@ func TestExport_ExponentialBackoff(t *testing.T) {
403403
httpClient := &http.Client{Timeout: 5 * time.Second}
404404

405405
// Use full server URL for testing
406-
exporter := newTelemetryExporter(server.URL, httpClient, cfg)
406+
exporter := newTelemetryExporter(server.URL, "test-version", httpClient, cfg)
407407

408408
metrics := []*telemetryMetric{
409409
{

telemetry/integration_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ func TestIntegration_EndToEnd_WithCircuitBreaker(t *testing.T) {
4848
defer server.Close()
4949

5050
// Create telemetry client
51-
exporter := newTelemetryExporter(server.URL, httpClient, cfg)
51+
exporter := newTelemetryExporter(server.URL, "test-version", httpClient, cfg)
5252
aggregator := newMetricsAggregator(exporter, cfg)
5353
defer aggregator.close(context.Background())
5454

@@ -95,7 +95,7 @@ func TestIntegration_CircuitBreakerOpening(t *testing.T) {
9595
}))
9696
defer server.Close()
9797

98-
exporter := newTelemetryExporter(server.URL, httpClient, cfg)
98+
exporter := newTelemetryExporter(server.URL, "test-version", httpClient, cfg)
9999
aggregator := newMetricsAggregator(exporter, cfg)
100100
defer aggregator.close(context.Background())
101101

@@ -218,7 +218,7 @@ func TestIntegration_PrivacyCompliance_NoQueryText(t *testing.T) {
218218
}))
219219
defer server.Close()
220220

221-
exporter := newTelemetryExporter(server.URL, httpClient, cfg)
221+
exporter := newTelemetryExporter(server.URL, "test-version", httpClient, cfg)
222222
aggregator := newMetricsAggregator(exporter, cfg)
223223
defer aggregator.close(context.Background())
224224

@@ -273,7 +273,7 @@ func TestIntegration_TagFiltering(t *testing.T) {
273273
}))
274274
defer server.Close()
275275

276-
exporter := newTelemetryExporter(server.URL, httpClient, cfg)
276+
exporter := newTelemetryExporter(server.URL, "test-version", httpClient, cfg)
277277

278278
// Test metric with mixed tags
279279
metric := &telemetryMetric{

0 commit comments

Comments
 (0)