Skip to content

Commit 39d014b

Browse files
mahadzaryab1amol-verma-allen
authored andcommitted
[refactor] Consolidate v1/v2 writer factory adapter functionality (jaegertracing#7022)
## Which problem is this PR solving? - Towards jaegertracing#6979 ## Description of the changes - This PR consolidates the v1/v2 writer adapter functionality by combining `GetV1Writer` with `NewSpanWriter` ## How was this change tested? - CI ## Checklist - [x] I have read https://github.com/jaegertracing/jaeger/blob/master/CONTRIBUTING_GUIDELINES.md - [x] I have signed all commits - [x] I have added unit tests for the new functionality - [x] I have run lint and test steps successfully - for `jaeger`: `make lint test` - for `jaeger-ui`: `npm run lint` and `npm run test` Signed-off-by: Mahad Zaryab <[email protected]>
1 parent a294b69 commit 39d014b

File tree

7 files changed

+31
-85
lines changed

7 files changed

+31
-85
lines changed

cmd/collector/app/span_processor.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -227,11 +227,8 @@ func (sp *spanProcessor) saveSpan(span *model.Span, tenant string) {
227227
}
228228

229229
func (sp *spanProcessor) writeSpan(ctx context.Context, span *model.Span) error {
230-
if spanWriter, ok := v1adapter.GetV1Writer(sp.traceWriter); ok {
231-
return spanWriter.WriteSpan(ctx, span)
232-
}
233-
traces := v1adapter.V1BatchesToTraces([]*model.Batch{{Spans: []*model.Span{span}}})
234-
return sp.traceWriter.WriteTraces(ctx, traces)
230+
spanWriter := v1adapter.GetV1Writer(sp.traceWriter)
231+
return spanWriter.WriteSpan(ctx, span)
235232
}
236233

237234
func (sp *spanProcessor) countSpansInQueue(span *model.Span, _ string /* tenant */) {

cmd/jaeger/internal/extension/jaegerquery/server.go

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121
"github.com/jaegertracing/jaeger/internal/metrics"
2222
"github.com/jaegertracing/jaeger/internal/storage/metricstore/disabled"
2323
"github.com/jaegertracing/jaeger/internal/storage/v1/api/metricstore"
24-
"github.com/jaegertracing/jaeger/internal/storage/v1/api/spanstore"
2524
"github.com/jaegertracing/jaeger/internal/storage/v2/api/depstore"
2625
"github.com/jaegertracing/jaeger/internal/storage/v2/api/tracestore"
2726
"github.com/jaegertracing/jaeger/internal/storage/v2/v1adapter"
@@ -159,7 +158,8 @@ func (s *server) addArchiveStorage(
159158
v2opts.ArchiveTraceReader = traceReader
160159
v2opts.ArchiveTraceWriter = traceWriter
161160

162-
spanReader, spanWriter := getV1Adapters(traceReader, traceWriter)
161+
spanReader := v1adapter.GetV1Reader(traceReader)
162+
spanWriter := v1adapter.GetV1Writer(traceWriter)
163163

164164
opts.ArchiveSpanReader = spanReader
165165
opts.ArchiveSpanWriter = spanWriter
@@ -181,19 +181,6 @@ func (s *server) initArchiveStorage(f tracestore.Factory) (tracestore.Reader, tr
181181
return reader, writer
182182
}
183183

184-
func getV1Adapters(
185-
reader tracestore.Reader,
186-
writer tracestore.Writer,
187-
) (spanstore.Reader, spanstore.Writer) {
188-
v1Reader := v1adapter.GetV1Reader(reader)
189-
v1Writer, ok := v1adapter.GetV1Writer(writer)
190-
if !ok {
191-
v1Writer = v1adapter.NewSpanWriter(writer)
192-
}
193-
194-
return v1Reader, v1Writer
195-
}
196-
197184
func (s *server) createMetricReader(host component.Host) (metricstore.Reader, error) {
198185
if s.config.Storage.Metrics == "" {
199186
s.telset.Logger.Info("Metric storage not configured")

cmd/jaeger/internal/extension/jaegerquery/server_test.go

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,10 @@ import (
2929
"github.com/jaegertracing/jaeger/internal/storage/v1"
3030
"github.com/jaegertracing/jaeger/internal/storage/v1/api/metricstore"
3131
metricstoremocks "github.com/jaegertracing/jaeger/internal/storage/v1/api/metricstore/mocks"
32-
"github.com/jaegertracing/jaeger/internal/storage/v1/api/spanstore"
33-
spanstoremocks "github.com/jaegertracing/jaeger/internal/storage/v1/api/spanstore/mocks"
3432
"github.com/jaegertracing/jaeger/internal/storage/v2/api/depstore"
3533
depstoremocks "github.com/jaegertracing/jaeger/internal/storage/v2/api/depstore/mocks"
3634
"github.com/jaegertracing/jaeger/internal/storage/v2/api/tracestore"
3735
tracestoremocks "github.com/jaegertracing/jaeger/internal/storage/v2/api/tracestore/mocks"
38-
"github.com/jaegertracing/jaeger/internal/storage/v2/v1adapter"
3936
"github.com/jaegertracing/jaeger/internal/telemetry"
4037
"github.com/jaegertracing/jaeger/internal/testutils"
4138
)
@@ -344,39 +341,6 @@ func TestServerAddArchiveStorage(t *testing.T) {
344341
}
345342
}
346343

347-
func TestGetV1Adapters(t *testing.T) {
348-
tests := []struct {
349-
name string
350-
reader tracestore.Reader
351-
writer tracestore.Writer
352-
expectedReader spanstore.Reader
353-
expectedWriter spanstore.Writer
354-
}{
355-
{
356-
name: "native tracestore.Reader and tracestore.Writer",
357-
reader: &tracestoremocks.Reader{},
358-
writer: &tracestoremocks.Writer{},
359-
expectedReader: &v1adapter.SpanReader{},
360-
expectedWriter: v1adapter.NewSpanWriter(&tracestoremocks.Writer{}),
361-
},
362-
{
363-
name: "wrapped spanstore.Reader and spanstore.Writer",
364-
reader: v1adapter.NewTraceReader(&spanstoremocks.Reader{}),
365-
writer: v1adapter.NewTraceWriter(&spanstoremocks.Writer{}),
366-
expectedReader: &spanstoremocks.Reader{},
367-
expectedWriter: &spanstoremocks.Writer{},
368-
},
369-
}
370-
371-
for _, test := range tests {
372-
t.Run(test.name, func(t *testing.T) {
373-
gotReader, gotWriter := getV1Adapters(test.reader, test.writer)
374-
require.IsType(t, test.expectedReader, gotReader)
375-
require.Equal(t, test.expectedWriter, gotWriter)
376-
})
377-
}
378-
}
379-
380344
func TestServerAddMetricsStorage(t *testing.T) {
381345
host := componenttest.NewNopHost()
382346

internal/storage/v2/v1adapter/spanwriter.go

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ package v1adapter
66
import (
77
"context"
88

9-
jaegerTranslator "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger"
10-
119
"github.com/jaegertracing/jaeger-idl/model/v1"
1210
"github.com/jaegertracing/jaeger/internal/storage/v1/api/spanstore"
1311
"github.com/jaegertracing/jaeger/internal/storage/v2/api/tracestore"
@@ -21,13 +19,7 @@ type SpanWriter struct {
2119
traceWriter tracestore.Writer
2220
}
2321

24-
func NewSpanWriter(traceWriter tracestore.Writer) *SpanWriter {
25-
return &SpanWriter{
26-
traceWriter: traceWriter,
27-
}
28-
}
29-
3022
func (sw *SpanWriter) WriteSpan(ctx context.Context, span *model.Span) error {
31-
traces, _ := jaegerTranslator.ProtoToTraces([]*model.Batch{{Spans: []*model.Span{span}}})
23+
traces := V1BatchesToTraces([]*model.Batch{{Spans: []*model.Span{span}}})
3224
return sw.traceWriter.WriteTraces(ctx, traces)
3325
}

internal/storage/v2/v1adapter/spanwriter_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@ func TestSpanWriter_WriteSpan(t *testing.T) {
3939
for _, test := range tests {
4040
t.Run(test.name, func(t *testing.T) {
4141
mockTraceWriter := &tracestoremocks.Writer{}
42-
spanWriter := NewSpanWriter(mockTraceWriter)
42+
spanWriter := &SpanWriter{
43+
traceWriter: mockTraceWriter,
44+
}
4345

4446
now := time.Now().UTC()
4547
testSpan := &model.Span{

internal/storage/v2/v1adapter/tracewriter.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,13 @@ type TraceWriter struct {
2020
spanWriter spanstore.Writer
2121
}
2222

23-
func GetV1Writer(writer tracestore.Writer) (spanstore.Writer, bool) {
23+
func GetV1Writer(writer tracestore.Writer) spanstore.Writer {
2424
if tr, ok := writer.(*TraceWriter); ok {
25-
return tr.spanWriter, ok
25+
return tr.spanWriter
26+
}
27+
return &SpanWriter{
28+
traceWriter: writer,
2629
}
27-
return nil, false
2830
}
2931

3032
func NewTraceWriter(spanWriter spanstore.Writer) *TraceWriter {

internal/storage/v2/v1adapter/tracewriter_test.go

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616

1717
"github.com/jaegertracing/jaeger-idl/model/v1"
1818
"github.com/jaegertracing/jaeger/internal/storage/v1/api/spanstore"
19-
spanstoreMocks "github.com/jaegertracing/jaeger/internal/storage/v1/api/spanstore/mocks"
19+
spanstoremocks "github.com/jaegertracing/jaeger/internal/storage/v1/api/spanstore/mocks"
2020
"github.com/jaegertracing/jaeger/internal/storage/v1/memory"
2121
tracestoremocks "github.com/jaegertracing/jaeger/internal/storage/v2/api/tracestore/mocks"
2222
)
@@ -42,7 +42,7 @@ func TestWriteTraces(t *testing.T) {
4242
}
4343

4444
func TestWriteTracesError(t *testing.T) {
45-
mockstore := spanstoreMocks.NewWriter(t)
45+
mockstore := spanstoremocks.NewWriter(t)
4646
mockstore.On(
4747
"WriteSpan",
4848
mock.AnythingOfType("context.backgroundCtx"),
@@ -57,20 +57,22 @@ func TestWriteTracesError(t *testing.T) {
5757
require.ErrorContains(t, err, "mocked error")
5858
}
5959

60-
func TestGetV1Writer_NoError(t *testing.T) {
61-
memstore := memory.NewStore()
62-
traceWriter := &TraceWriter{
63-
spanWriter: memstore,
64-
}
65-
v1Writer, ok := GetV1Writer(traceWriter)
66-
require.True(t, ok)
67-
require.Equal(t, memstore, v1Writer)
68-
}
69-
70-
func TestGetV1Writer_Error(t *testing.T) {
71-
w := new(tracestoremocks.Writer)
72-
_, ok := GetV1Writer(w)
73-
require.False(t, ok)
60+
func TestGetV1Writer(t *testing.T) {
61+
t.Run("wrapped v1 writer", func(t *testing.T) {
62+
writer := new(spanstoremocks.Writer)
63+
traceWriter := &TraceWriter{
64+
spanWriter: writer,
65+
}
66+
v1Writer := GetV1Writer(traceWriter)
67+
require.Equal(t, writer, v1Writer)
68+
})
69+
70+
t.Run("native v2 writer", func(t *testing.T) {
71+
writer := new(tracestoremocks.Writer)
72+
v1Writer := GetV1Writer(writer)
73+
require.IsType(t, &SpanWriter{}, v1Writer)
74+
require.Equal(t, writer, v1Writer.(*SpanWriter).traceWriter)
75+
})
7476
}
7577

7678
func makeTraces() ptrace.Traces {

0 commit comments

Comments
 (0)