Skip to content

Commit bcfe069

Browse files
committed
*: implement span tracing in gitbase nodes
Signed-off-by: Miguel Molina <[email protected]>
1 parent f95a2fe commit bcfe069

14 files changed

+105
-14
lines changed

blobs.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,14 +69,16 @@ func (r *blobsTable) TransformExpressionsUp(f sql.TransformExprFunc) (sql.Node,
6969
}
7070

7171
func (r blobsTable) RowIter(ctx *sql.Context) (sql.RowIter, error) {
72+
span, ctx := ctx.Span("gitbase.BlobsTable")
7273
iter := new(blobIter)
7374

7475
repoIter, err := NewRowRepoIter(ctx, iter)
7576
if err != nil {
77+
span.Finish()
7678
return nil, err
7779
}
7880

79-
return repoIter, nil
81+
return sql.NewSpanIter(span, repoIter), nil
8082
}
8183

8284
func (blobsTable) Children() []sql.Node {
@@ -91,7 +93,8 @@ func (r *blobsTable) WithProjectAndFilters(
9193
ctx *sql.Context,
9294
_, filters []sql.Expression,
9395
) (sql.RowIter, error) {
94-
return rowIterWithSelectors(
96+
span, ctx := ctx.Span("gitbase.BlobsTable")
97+
iter, err := rowIterWithSelectors(
9598
ctx, BlobsSchema, BlobsTableName, filters,
9699
[]string{"hash"},
97100
func(selectors selectors) (RowRepoIter, error) {
@@ -107,6 +110,13 @@ func (r *blobsTable) WithProjectAndFilters(
107110
return &blobsByHashIter{hashes: hashes}, nil
108111
},
109112
)
113+
114+
if err != nil {
115+
span.Finish()
116+
return nil, err
117+
}
118+
119+
return sql.NewSpanIter(span, iter), nil
110120
}
111121

112122
type blobIter struct {

commits.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,16 @@ func (r *commitsTable) TransformExpressionsUp(f sql.TransformExprFunc) (sql.Node
6060
}
6161

6262
func (r commitsTable) RowIter(ctx *sql.Context) (sql.RowIter, error) {
63+
span, ctx := ctx.Span("gitbase.CommitsTable")
6364
iter := new(commitIter)
6465

6566
repoIter, err := NewRowRepoIter(ctx, iter)
6667
if err != nil {
68+
span.Finish()
6769
return nil, err
6870
}
6971

70-
return repoIter, nil
72+
return sql.NewSpanIter(span, repoIter), nil
7173
}
7274

7375
func (commitsTable) Children() []sql.Node {
@@ -82,7 +84,8 @@ func (r *commitsTable) WithProjectAndFilters(
8284
ctx *sql.Context,
8385
_, filters []sql.Expression,
8486
) (sql.RowIter, error) {
85-
return rowIterWithSelectors(
87+
span, ctx := ctx.Span("gitbase.CommitsTable")
88+
iter, err := rowIterWithSelectors(
8689
ctx, CommitsSchema, CommitsTableName, filters,
8790
[]string{"hash"},
8891
func(selectors selectors) (RowRepoIter, error) {
@@ -98,6 +101,13 @@ func (r *commitsTable) WithProjectAndFilters(
98101
return &commitsByHashIter{hashes: hashes}, nil
99102
},
100103
)
104+
105+
if err != nil {
106+
span.Finish()
107+
return nil, err
108+
}
109+
110+
return sql.NewSpanIter(span, iter), nil
101111
}
102112

103113
type commitIter struct {

internal/function/commit_has_tree.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ func (CommitHasTree) Type() sql.Type { return sql.Boolean }
4646

4747
// Eval implements the Expression interface.
4848
func (f *CommitHasTree) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
49+
span, ctx := ctx.Span("gitbase.CommitHasTree")
50+
defer span.Finish()
51+
4952
s, ok := ctx.Session.(*gitbase.Session)
5053
if !ok {
5154
return nil, gitbase.ErrInvalidGitbaseSession.New(ctx.Session)

internal/function/history_idx.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ type historyKey struct {
3838

3939
// Eval implements the Expression interface.
4040
func (f *HistoryIdx) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
41+
span, ctx := ctx.Span("gitbase.HistoryIdx")
42+
defer span.Finish()
43+
4144
s, ok := ctx.Session.(*gitbase.Session)
4245
if !ok {
4346
return nil, gitbase.ErrInvalidGitbaseSession.New(ctx.Session)

internal/function/is_remote.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ func NewIsRemote(e sql.Expression) sql.Expression {
2121

2222
// Eval implements the expression interface.
2323
func (f *IsRemote) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
24+
span, ctx := ctx.Span("gitbase.IsRemote")
25+
defer span.Finish()
26+
2427
val, err := f.Child.Eval(ctx, row)
2528
if err != nil {
2629
return nil, err

internal/function/is_tag.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ func NewIsTag(e sql.Expression) sql.Expression {
2121

2222
// Eval implements the expression interface.
2323
func (f *IsTag) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
24+
span, ctx := ctx.Span("gitbase.IsTag")
25+
defer span.Finish()
26+
2427
val, err := f.Child.Eval(ctx, row)
2528
if err != nil {
2629
return nil, err

internal/function/language.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ func (f *Language) TransformUp(fn sql.TransformExprFunc) (sql.Expression, error)
7272

7373
// Eval implements the Expression interface.
7474
func (f *Language) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
75+
span, ctx := ctx.Span("gitbase.Language")
76+
defer span.Finish()
77+
7578
left, err := f.Left.Eval(ctx, row)
7679
if err != nil {
7780
return nil, err

internal/function/language_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ func TestLanguage(t *testing.T) {
2828
for _, tt := range testCases {
2929
t.Run(tt.name, func(t *testing.T) {
3030
require := require.New(t)
31+
ctx := sql.NewEmptyContext()
3132

3233
var args = make([]sql.Expression, len(tt.row))
3334
for i := range tt.row {
@@ -37,7 +38,7 @@ func TestLanguage(t *testing.T) {
3738
f, err := NewLanguage(args...)
3839
if err == nil {
3940
var val interface{}
40-
val, err = f.Eval(nil, tt.row)
41+
val, err = f.Eval(ctx, tt.row)
4142
if tt.err == nil {
4243
require.NoError(err)
4344
require.Equal(tt.expected, val)

internal/function/uast.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,9 @@ func (f UAST) String() string {
115115

116116
// Eval implements the Expression interface.
117117
func (f UAST) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
118+
span, ctx := ctx.Span("gitbase.UAST")
119+
defer span.Finish()
120+
118121
session, ok := ctx.Session.(*gitbase.Session)
119122
if !ok {
120123
return nil, gitbase.ErrInvalidGitbaseSession.New(ctx.Session)
@@ -229,6 +232,9 @@ func (UASTXPath) Type() sql.Type {
229232

230233
// Eval implements the Expression interface.
231234
func (f *UASTXPath) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
235+
span, ctx := ctx.Span("gitbase.UASTXPath")
236+
defer span.Finish()
237+
232238
left, err := f.Left.Eval(ctx, row)
233239
if err != nil {
234240
return nil, err

internal/rule/squashjoins.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ func SquashJoins(
2828
return n, nil
2929
}
3030

31+
span, ctx := ctx.Span("gitbase.SquashJoins")
32+
defer span.Finish()
33+
3134
a.Log("squashing joins, node of type %T", n)
3235
n, err := n.TransformUp(func(n sql.Node) (sql.Node, error) {
3336
join, ok := n.(*plan.InnerJoin)
@@ -606,11 +609,17 @@ func (t *squashedTable) Resolved() bool {
606609
return true
607610
}
608611
func (t *squashedTable) RowIter(ctx *sql.Context) (sql.RowIter, error) {
612+
span, ctx := ctx.Span("gitbase.SquashedTable")
609613
iter, err := gitbase.NewRowRepoIter(ctx, gitbase.NewChainableRowRepoIter(ctx, t.iter))
610614
if err != nil {
615+
span.Finish()
611616
return nil, err
612617
}
613-
return &schemaMapperIter{iter, t.schemaMappings}, nil
618+
619+
return sql.NewSpanIter(
620+
span,
621+
&schemaMapperIter{iter, t.schemaMappings},
622+
), nil
614623
}
615624
func (t *squashedTable) String() string {
616625
return fmt.Sprintf("SquashedTable(%s)", strings.Join(t.tables, ", "))

0 commit comments

Comments
 (0)