Skip to content

Commit 8d67792

Browse files
authored
feat(bigquery): add tracing telemetry to Table and Routine operations (#14216)
1 parent 54f46f7 commit 8d67792

File tree

4 files changed

+216
-31
lines changed

4 files changed

+216
-31
lines changed

bigquery/routine.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ func (r *Routine) Create(ctx context.Context, rm *RoutineMetadata) (err error) {
8181
DatasetId: r.DatasetID,
8282
RoutineId: r.RoutineID,
8383
}
84+
ctx = setDatasetItemTraceMetadata(ctx, r.ProjectID, r.DatasetID, "routines")
8485
req := r.c.bqs.Routines.Insert(r.ProjectID, r.DatasetID, routine).Context(ctx)
8586
setClientHeader(req.Header())
8687
_, err = req.Do()
@@ -92,6 +93,7 @@ func (r *Routine) Metadata(ctx context.Context) (rm *RoutineMetadata, err error)
9293
ctx = trace.StartSpan(ctx, "cloud.google.com/go/bigquery.Routine.Metadata")
9394
defer func() { trace.EndSpan(ctx, err) }()
9495

96+
ctx = setRoutineTraceMetadata(ctx, r.ProjectID, r.DatasetID, r.RoutineID)
9597
req := r.c.bqs.Routines.Get(r.ProjectID, r.DatasetID, r.RoutineID).Context(ctx)
9698
setClientHeader(req.Header())
9799
var routine *bq.Routine
@@ -123,6 +125,7 @@ func (r *Routine) Update(ctx context.Context, upd *RoutineMetadataToUpdate, etag
123125
RoutineId: r.RoutineID,
124126
}
125127

128+
ctx = setRoutineTraceMetadata(ctx, r.ProjectID, r.DatasetID, r.RoutineID)
126129
call := r.c.bqs.Routines.Update(r.ProjectID, r.DatasetID, r.RoutineID, bqr).Context(ctx)
127130
setClientHeader(call.Header())
128131
if etag != "" {
@@ -145,6 +148,7 @@ func (r *Routine) Delete(ctx context.Context) (err error) {
145148
ctx = trace.StartSpan(ctx, "cloud.google.com/go/bigquery.Model.Delete")
146149
defer func() { trace.EndSpan(ctx, err) }()
147150

151+
ctx = setRoutineTraceMetadata(ctx, r.ProjectID, r.DatasetID, r.RoutineID)
148152
req := r.c.bqs.Routines.Delete(r.ProjectID, r.DatasetID, r.RoutineID).Context(ctx)
149153
setClientHeader(req.Header())
150154
return req.Do()

bigquery/table.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -796,6 +796,7 @@ func (t *Table) Create(ctx context.Context, tm *TableMetadata) (err error) {
796796
TableId: t.TableID,
797797
}
798798

799+
ctx = setDatasetItemTraceMetadata(ctx, t.ProjectID, t.DatasetID, "tables")
799800
req := t.c.bqs.Tables.Insert(t.ProjectID, t.DatasetID, table).Context(ctx)
800801
setClientHeader(req.Header())
801802
return runWithRetry(ctx, func() (err error) {
@@ -935,6 +936,7 @@ func (t *Table) Metadata(ctx context.Context, opts ...TableMetadataOption) (md *
935936
ctx = trace.StartSpan(ctx, "cloud.google.com/go/bigquery.Table.Metadata")
936937
defer func() { trace.EndSpan(ctx, err) }()
937938

939+
ctx = setTableTraceMetadata(ctx, t.ProjectID, t.DatasetID, t.TableID)
938940
tgc := &tableGetCall{
939941
call: t.c.bqs.Tables.Get(t.ProjectID, t.DatasetID, t.TableID).Context(ctx),
940942
}
@@ -1028,6 +1030,7 @@ func (t *Table) Delete(ctx context.Context) (err error) {
10281030
ctx = trace.StartSpan(ctx, "cloud.google.com/go/bigquery.Table.Delete")
10291031
defer func() { trace.EndSpan(ctx, err) }()
10301032

1033+
ctx = setTableTraceMetadata(ctx, t.ProjectID, t.DatasetID, t.TableID)
10311034
call := t.c.bqs.Tables.Delete(t.ProjectID, t.DatasetID, t.TableID).Context(ctx)
10321035
setClientHeader(call.Header())
10331036

@@ -1084,6 +1087,7 @@ func (t *Table) Update(ctx context.Context, tm TableMetadataToUpdate, etag strin
10841087
return nil, err
10851088
}
10861089

1090+
ctx = setTableTraceMetadata(ctx, t.ProjectID, t.DatasetID, t.TableID)
10871091
tpc := &tablePatchCall{
10881092
call: t.c.bqs.Tables.Patch(t.ProjectID, t.DatasetID, t.TableID, bqt).Context(ctx),
10891093
}

bigquery/trace.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,3 +83,33 @@ func setModelTraceMetadata(ctx context.Context, projectID, datasetID, modelID st
8383
modelResourceName(projectID, datasetID, modelID),
8484
"/bigquery/v2/projects/{projectId}/datasets/{datasetId}/models/{modelId}")
8585
}
86+
87+
// tableResourceName constructs the standard resource name for a table.
88+
// E.g., "//bigquery.googleapis.com/projects/{project}/datasets/{dataset}/tables/{table}"
89+
func tableResourceName(projectID, datasetID, tableID string) string {
90+
return fmt.Sprintf("//bigquery.googleapis.com/projects/%s/datasets/%s/tables/%s", projectID, datasetID, tableID)
91+
}
92+
93+
// routineResourceName constructs the standard resource name for a routine.
94+
// E.g., "//bigquery.googleapis.com/projects/{project}/datasets/{dataset}/routines/{routine}"
95+
func routineResourceName(projectID, datasetID, routineID string) string {
96+
return fmt.Sprintf("//bigquery.googleapis.com/projects/%s/datasets/%s/routines/%s", projectID, datasetID, routineID)
97+
}
98+
99+
func setTableTraceMetadata(ctx context.Context, projectID, datasetID, tableID string) context.Context {
100+
if !gax.IsFeatureEnabled("TRACING") {
101+
return ctx
102+
}
103+
return setTraceMetadata(ctx,
104+
tableResourceName(projectID, datasetID, tableID),
105+
"/bigquery/v2/projects/{projectId}/datasets/{datasetId}/tables/{tableId}")
106+
}
107+
108+
func setRoutineTraceMetadata(ctx context.Context, projectID, datasetID, routineID string) context.Context {
109+
if !gax.IsFeatureEnabled("TRACING") {
110+
return ctx
111+
}
112+
return setTraceMetadata(ctx,
113+
routineResourceName(projectID, datasetID, routineID),
114+
"/bigquery/v2/projects/{projectId}/datasets/{datasetId}/routines/{routineId}")
115+
}

0 commit comments

Comments
 (0)