Skip to content

Commit f388244

Browse files
committed
Update driver integration for config overlay pattern
Adapt InitializeForConnection to use ConfigValue[bool] pattern from base branch. - Change enableTelemetry parameter to *bool (nil = unset, check server) - Use config.NewConfigValue() to set explicit values - Update connector.go call site to pass pointer - Remove ForceEnableTelemetry (now handled by ConfigValue override) Signed-off-by: samikshya-chand_data <samikshya.chand@databricks.com>
1 parent 09b9b99 commit f388244

File tree

2 files changed

+30
-18
lines changed

2 files changed

+30
-18
lines changed

connector.go

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -76,18 +76,23 @@ func (c *connector) Connect(ctx context.Context) (driver.Conn, error) {
7676
}
7777
log := logger.WithContext(conn.id, driverctx.CorrelationIdFromContext(ctx), "")
7878

79-
// Initialize telemetry if configured
80-
if c.cfg.EnableTelemetry || c.cfg.ForceEnableTelemetry {
81-
conn.telemetry = telemetry.InitializeForConnection(
82-
ctx,
83-
c.cfg.Host,
84-
c.client,
85-
c.cfg.EnableTelemetry,
86-
c.cfg.ForceEnableTelemetry,
87-
)
88-
if conn.telemetry != nil {
89-
log.Debug().Msg("telemetry initialized for connection")
90-
}
79+
// Initialize telemetry (always attempt, let feature flags decide)
80+
var enableTelemetry *bool
81+
if c.cfg.ForceEnableTelemetry || c.cfg.EnableTelemetry {
82+
// User explicitly enabled telemetry
83+
trueVal := true
84+
enableTelemetry = &trueVal
85+
}
86+
// else: leave nil to check server feature flag
87+
88+
conn.telemetry = telemetry.InitializeForConnection(
89+
ctx,
90+
c.cfg.Host,
91+
c.client,
92+
enableTelemetry,
93+
)
94+
if conn.telemetry != nil {
95+
log.Debug().Msg("telemetry initialized for connection")
9196
}
9297

9398
log.Info().Msgf("connect: host=%s port=%d httpPath=%s serverProtocolVersion=0x%X", c.cfg.Host, c.cfg.Port, c.cfg.HTTPPath, session.ServerProtocolVersion)

telemetry/driver_integration.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package telemetry
33
import (
44
"context"
55
"net/http"
6+
7+
"github.com/databricks/databricks-sql-go/internal/config"
68
)
79

810
// InitializeForConnection initializes telemetry for a database connection.
@@ -13,22 +15,24 @@ import (
1315
// - ctx: Context for the initialization
1416
// - host: Databricks host
1517
// - httpClient: HTTP client for making requests
16-
// - enableTelemetry: User opt-in flag
17-
// - forceEnableTelemetry: Force enable flag (bypasses server checks)
18+
// - enableTelemetry: User opt-in flag (nil = unset, true = enable, false = disable)
1819
//
1920
// Returns:
2021
// - *Interceptor: Telemetry interceptor if enabled, nil otherwise
2122
func InitializeForConnection(
2223
ctx context.Context,
2324
host string,
2425
httpClient *http.Client,
25-
enableTelemetry bool,
26-
forceEnableTelemetry bool,
26+
enableTelemetry *bool,
2727
) *Interceptor {
2828
// Create telemetry config
2929
cfg := DefaultConfig()
30-
cfg.EnableTelemetry = enableTelemetry
31-
cfg.ForceEnableTelemetry = forceEnableTelemetry
30+
31+
// Set EnableTelemetry based on user preference
32+
if enableTelemetry != nil {
33+
cfg.EnableTelemetry = config.NewConfigValue(*enableTelemetry)
34+
}
35+
// else: leave unset (will check server feature flag)
3236

3337
// Check if telemetry should be enabled
3438
if !isTelemetryEnabled(ctx, cfg, host, httpClient) {
@@ -38,6 +42,9 @@ func InitializeForConnection(
3842
// Get or create telemetry client for this host
3943
clientMgr := getClientManager()
4044
telemetryClient := clientMgr.getOrCreateClient(host, httpClient, cfg)
45+
if telemetryClient == nil {
46+
return nil
47+
}
4148

4249
// Get feature flag cache context (for reference counting)
4350
flagCache := getFeatureFlagCache()

0 commit comments

Comments
 (0)