Skip to content

Commit bfc46ac

Browse files
Copilotyurishkuro
andauthored
Move param type conversion util out of tracestore API into v1adapter (#8255)
`internal/storage/v2/api/tracestore/reader.go` imported `internal/storage/v1/api/spanstore` solely to support the `ToSpanStoreQueryParameters()` conversion helper — an undesirable v1 dependency in a v2 API package. ## Changes - **`tracestore/reader.go`**: Remove `ToSpanStoreQueryParameters()` method from `TraceQueryParams` and drop `spanstore`/`jptrace` imports. The v2 tracestore API package is now free of v1 dependencies. - **`v1adapter/tracereader.go`**: Add `GetV1QueryParameters(query tracestore.TraceQueryParams) *spanstore.TraceQueryParameters` as an exported function. The v1adapter package is the correct home for v1↔v2 conversion logic. - **Tests**: Move `TestToSpanStoreQueryParameters` → `TestGetV1QueryParameters` into `v1adapter/tracereader_test.go`. ```go // Before (in tracestore package — wrong layer): func (t *TraceQueryParams) ToSpanStoreQueryParameters() *spanstore.TraceQueryParameters { ... } // After (in v1adapter package — correct layer): func GetV1QueryParameters(query tracestore.TraceQueryParams) *spanstore.TraceQueryParameters { ... } ``` <!-- START COPILOT CODING AGENT TIPS --> --- 📱 Kick off Copilot coding agent tasks wherever you are with [GitHub Mobile](https://gh.io/cca-mobile-docs), available on iOS and Android. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yurishkuro <3523016+yurishkuro@users.noreply.github.com>
1 parent 3e5ee2b commit bfc46ac

File tree

4 files changed

+45
-56
lines changed

4 files changed

+45
-56
lines changed

internal/storage/v2/api/tracestore/reader.go

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ import (
1010

1111
"go.opentelemetry.io/collector/pdata/pcommon"
1212
"go.opentelemetry.io/collector/pdata/ptrace"
13-
14-
"github.com/jaegertracing/jaeger/internal/jptrace"
15-
"github.com/jaegertracing/jaeger/internal/storage/v1/api/spanstore"
1613
)
1714

1815
// Reader finds and loads traces and other data from storage.
@@ -105,19 +102,6 @@ type FoundTraceID struct {
105102
End time.Time
106103
}
107104

108-
func (t *TraceQueryParams) ToSpanStoreQueryParameters() *spanstore.TraceQueryParameters {
109-
return &spanstore.TraceQueryParameters{
110-
ServiceName: t.ServiceName,
111-
OperationName: t.OperationName,
112-
Tags: jptrace.PcommonMapToPlainMap(t.Attributes),
113-
StartTimeMin: t.StartTimeMin,
114-
StartTimeMax: t.StartTimeMax,
115-
DurationMin: t.DurationMin,
116-
DurationMax: t.DurationMax,
117-
NumTraces: t.SearchDepth,
118-
}
119-
}
120-
121105
// OperationQueryParams contains parameters of query operations, empty spanKind means get operations for all kinds of span.
122106
type OperationQueryParams struct {
123107
ServiceName string

internal/storage/v2/api/tracestore/reader_test.go

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,3 @@
22
// SPDX-License-Identifier: Apache-2.0
33

44
package tracestore
5-
6-
import (
7-
"testing"
8-
"time"
9-
10-
"github.com/stretchr/testify/require"
11-
"go.opentelemetry.io/collector/pdata/pcommon"
12-
13-
"github.com/jaegertracing/jaeger/internal/storage/v1/api/spanstore"
14-
)
15-
16-
func TestToSpanStoreQueryParameters(t *testing.T) {
17-
now := time.Now()
18-
attributes := pcommon.NewMap()
19-
attributes.PutStr("tag-a", "val-a")
20-
21-
query := &TraceQueryParams{
22-
ServiceName: "service",
23-
OperationName: "operation",
24-
Attributes: attributes,
25-
StartTimeMin: now,
26-
StartTimeMax: now.Add(time.Minute),
27-
DurationMin: time.Minute,
28-
DurationMax: time.Hour,
29-
SearchDepth: 10,
30-
}
31-
expected := &spanstore.TraceQueryParameters{
32-
ServiceName: "service",
33-
OperationName: "operation",
34-
Tags: map[string]string{"tag-a": "val-a"},
35-
StartTimeMin: now,
36-
StartTimeMax: now.Add(time.Minute),
37-
DurationMin: time.Minute,
38-
DurationMax: time.Hour,
39-
NumTraces: 10,
40-
}
41-
require.Equal(t, expected, query.ToSpanStoreQueryParameters())
42-
}

internal/storage/v2/v1adapter/tracereader.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"go.opentelemetry.io/collector/pdata/ptrace"
1212

1313
"github.com/jaegertracing/jaeger-idl/model/v1"
14+
"github.com/jaegertracing/jaeger/internal/jptrace"
1415
"github.com/jaegertracing/jaeger/internal/storage/v1/api/spanstore"
1516
"github.com/jaegertracing/jaeger/internal/storage/v2/api/tracestore"
1617
)
@@ -86,7 +87,7 @@ func (tr *TraceReader) FindTraces(
8687
query tracestore.TraceQueryParams,
8788
) iter.Seq2[[]ptrace.Traces, error] {
8889
return func(yield func([]ptrace.Traces, error) bool) {
89-
traces, err := tr.spanReader.FindTraces(ctx, query.ToSpanStoreQueryParameters())
90+
traces, err := tr.spanReader.FindTraces(ctx, GetV1QueryParameters(query))
9091
if err != nil {
9192
yield(nil, err)
9293
return
@@ -106,7 +107,7 @@ func (tr *TraceReader) FindTraceIDs(
106107
query tracestore.TraceQueryParams,
107108
) iter.Seq2[[]tracestore.FoundTraceID, error] {
108109
return func(yield func([]tracestore.FoundTraceID, error) bool) {
109-
traceIDs, err := tr.spanReader.FindTraceIDs(ctx, query.ToSpanStoreQueryParameters())
110+
traceIDs, err := tr.spanReader.FindTraceIDs(ctx, GetV1QueryParameters(query))
110111
if err != nil {
111112
yield(nil, err)
112113
return
@@ -120,3 +121,17 @@ func (tr *TraceReader) FindTraceIDs(
120121
yield(otelIDs, nil)
121122
}
122123
}
124+
125+
// GetV1QueryParameters converts a tracestore.TraceQueryParams to a spanstore.TraceQueryParameters.
126+
func GetV1QueryParameters(query tracestore.TraceQueryParams) *spanstore.TraceQueryParameters {
127+
return &spanstore.TraceQueryParameters{
128+
ServiceName: query.ServiceName,
129+
OperationName: query.OperationName,
130+
Tags: jptrace.PcommonMapToPlainMap(query.Attributes),
131+
StartTimeMin: query.StartTimeMin,
132+
StartTimeMax: query.StartTimeMax,
133+
DurationMin: query.DurationMin,
134+
DurationMax: query.DurationMax,
135+
NumTraces: query.SearchDepth,
136+
}
137+
}

internal/storage/v2/v1adapter/tracereader_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,34 @@ import (
2222
"github.com/jaegertracing/jaeger/internal/storage/v2/api/tracestore"
2323
)
2424

25+
func TestGetV1QueryParameters(t *testing.T) {
26+
now := time.Now()
27+
attributes := pcommon.NewMap()
28+
attributes.PutStr("tag-a", "val-a")
29+
30+
query := tracestore.TraceQueryParams{
31+
ServiceName: "service",
32+
OperationName: "operation",
33+
Attributes: attributes,
34+
StartTimeMin: now,
35+
StartTimeMax: now.Add(time.Minute),
36+
DurationMin: time.Minute,
37+
DurationMax: time.Hour,
38+
SearchDepth: 10,
39+
}
40+
expected := &spanstore.TraceQueryParameters{
41+
ServiceName: "service",
42+
OperationName: "operation",
43+
Tags: map[string]string{"tag-a": "val-a"},
44+
StartTimeMin: now,
45+
StartTimeMax: now.Add(time.Minute),
46+
DurationMin: time.Minute,
47+
DurationMax: time.Hour,
48+
NumTraces: 10,
49+
}
50+
require.Equal(t, expected, GetV1QueryParameters(query))
51+
}
52+
2553
func TestTraceReader_GetTracesDelegatesSuccessResponse(t *testing.T) {
2654
sr := new(spanstoremocks.Reader)
2755
modelTrace := &model.Trace{

0 commit comments

Comments
 (0)