Skip to content

Commit fa63f3b

Browse files
samikshya-dbclaude
andcommitted
Add debug logging for telemetry panic recovery
Enable debug-level logging for all panic recovery blocks in telemetry code. This aids debugging while keeping logs clean (only visible with debug enabled). Changes: - Add logger import to exporter.go, aggregator.go, interceptor.go - Enable debug logging in 6 panic recovery blocks: - exporter: export panic - aggregator: recordMetric, completeStatement, async export panics - interceptor: afterExecute, recordConnection panics Addresses review feedback on PR #320 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 03d33d2 commit fa63f3b

3 files changed

Lines changed: 12 additions & 8 deletions

File tree

telemetry/aggregator.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import (
44
"context"
55
"sync"
66
"time"
7+
8+
"github.com/databricks/databricks-sql-go/logger"
79
)
810

911
// metricsAggregator aggregates metrics by statement and batches for export.
@@ -54,8 +56,7 @@ func (agg *metricsAggregator) recordMetric(ctx context.Context, metric *telemetr
5456
// Swallow all errors
5557
defer func() {
5658
if r := recover(); r != nil {
57-
// Log at trace level only
58-
// logger.Trace().Msgf("telemetry: recordMetric panic: %v", r)
59+
logger.Debug().Msgf("telemetry: recordMetric panic: %v", r)
5960
}
6061
}()
6162

@@ -125,7 +126,7 @@ func (agg *metricsAggregator) recordMetric(ctx context.Context, metric *telemetr
125126
func (agg *metricsAggregator) completeStatement(ctx context.Context, statementID string, failed bool) {
126127
defer func() {
127128
if r := recover(); r != nil {
128-
// Log at trace level only
129+
logger.Debug().Msgf("telemetry: completeStatement panic: %v", r)
129130
}
130131
}()
131132

@@ -204,7 +205,7 @@ func (agg *metricsAggregator) flushUnlocked(ctx context.Context) {
204205
go func() {
205206
defer func() {
206207
if r := recover(); r != nil {
207-
// Log at trace level only
208+
logger.Debug().Msgf("telemetry: async export panic: %v", r)
208209
}
209210
}()
210211
agg.exporter.export(ctx, metrics)

telemetry/exporter.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import (
88
"net/http"
99
"strings"
1010
"time"
11+
12+
"github.com/databricks/databricks-sql-go/logger"
1113
)
1214

1315
// telemetryExporter exports metrics to Databricks telemetry service.
@@ -64,7 +66,7 @@ func (e *telemetryExporter) export(ctx context.Context, metrics []*telemetryMetr
6466
defer func() {
6567
if r := recover(); r != nil {
6668
// Intentionally swallow panic - telemetry must not impact driver
67-
_ = r // Log at trace level only: logger.Trace().Msgf("telemetry: export panic: %v", r)
69+
logger.Debug().Msgf("telemetry: export panic: %v", r)
6870
}
6971
}()
7072

telemetry/interceptor.go

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

810
// Interceptor wraps driver operations to collect metrics.
@@ -75,8 +77,7 @@ func (i *Interceptor) afterExecute(ctx context.Context, err error) {
7577
// Swallow all panics
7678
defer func() {
7779
if r := recover(); r != nil {
78-
// Log at trace level only
79-
// logger.Trace().Msgf("telemetry: afterExecute panic: %v", r)
80+
logger.Debug().Msgf("telemetry: afterExecute panic: %v", r)
8081
}
8182
}()
8283

@@ -116,7 +117,7 @@ func (i *Interceptor) recordConnection(ctx context.Context, tags map[string]inte
116117

117118
defer func() {
118119
if r := recover(); r != nil {
119-
// Log at trace level only
120+
logger.Debug().Msgf("telemetry: recordConnection panic: %v", r)
120121
}
121122
}()
122123

0 commit comments

Comments
 (0)