Skip to content

Commit

Permalink
Upgrade Query API v3 to official OpenTelemetry format (jaegertracing#…
Browse files Browse the repository at this point in the history
…4742)

## Which problem is this PR solving?
- Resolves jaegertracing#4648
- Closes jaegertracing#4682 

## Description of the changes
- pull the latest version of jaeger-idl that uses OTLP v1
- regenerate protobuf types
- remove explicit translation with
`github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger`
- fix tests. Unfortunately, the actual translation returns error that
cannot be reproduced / tested, thus coverage declined a bit

## How was this change tested?
- CI only

---------

Signed-off-by: Yuri Shkuro <[email protected]>
  • Loading branch information
yurishkuro authored Sep 10, 2023
1 parent a15f3a3 commit 8f680cc
Show file tree
Hide file tree
Showing 14 changed files with 683 additions and 1,003 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci-protogen-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,4 @@ jobs:
go-version: 1.21.x

- name: Run protogen validation
run: make proto && git diff --name-status --exit-code
run: make init-submodules && make proto && git diff --name-status --exit-code
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -464,7 +464,7 @@ PROTO_GOGO_MAPPINGS := $(shell echo \
| sed 's/ //g')

.PHONY: proto
proto: init-submodules proto-prepare-otel
proto: proto-prepare-otel
# Generate gogo, swagger, go-validators, gRPC-storage-plugin output.
#
# -I declares import folders, in order of importance
Expand Down
10 changes: 9 additions & 1 deletion cmd/query/app/apiv3/grpc_gateway_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,15 @@ func testGRPCGatewayWithTenancy(t *testing.T, basePath string, serverTLS tlscfg.
err = jsonpb.Unmarshal(envelope.Result, &spansResponse)
require.NoError(t, err)
assert.Equal(t, 1, len(spansResponse.GetResourceSpans()))
assert.Equal(t, uint64ToTraceID(traceID.High, traceID.Low), spansResponse.GetResourceSpans()[0].GetInstrumentationLibrarySpans()[0].GetSpans()[0].GetTraceId())
assert.Equal(t, uint64ToTraceID(t, traceID.High, traceID.Low), spansResponse.GetResourceSpans()[0].GetScopeSpans()[0].GetSpans()[0].GetTraceId())
}

func uint64ToTraceID(t *testing.T, high, low uint64) []byte {
traceID := model.NewTraceID(high, low)
buf := make([]byte, 16)
_, err := traceID.MarshalTo(buf)
require.NoError(t, err)
return buf
}

func TestGRPCGateway(t *testing.T) {
Expand Down
12 changes: 9 additions & 3 deletions cmd/query/app/apiv3/grpc_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,17 @@ var _ api_v3.QueryServiceServer = (*Handler)(nil)
func (h *Handler) GetTrace(request *api_v3.GetTraceRequest, stream api_v3.QueryService_GetTraceServer) error {
traceID, err := model.TraceIDFromString(request.GetTraceId())
if err != nil {
return err
return fmt.Errorf("malform trace ID: %w", err)
}

trace, err := h.QueryService.GetTrace(stream.Context(), traceID)
if err != nil {
return fmt.Errorf("cannot retrieve trace: %w", err)
}
resourceSpans, err := modelToOTLP(trace.GetSpans())
if err != nil {
return err
}
resourceSpans := jaegerSpansToOTLP(trace.GetSpans())
return stream.Send(&api_v3.SpansResponseChunk{
ResourceSpans: resourceSpans,
})
Expand Down Expand Up @@ -103,7 +106,10 @@ func (h *Handler) FindTraces(request *api_v3.FindTracesRequest, stream api_v3.Qu
return err
}
for _, t := range traces {
resourceSpans := jaegerSpansToOTLP(t.GetSpans())
resourceSpans, err := modelToOTLP(t.GetSpans())
if err != nil {
return err
}
stream.Send(&api_v3.SpansResponseChunk{
ResourceSpans: resourceSpans,
})
Expand Down
2 changes: 1 addition & 1 deletion cmd/query/app/apiv3/grpc_handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ func TestGetTrace(t *testing.T) {
spansChunk, err := getTraceStream.Recv()
require.NoError(t, err)
require.Equal(t, 1, len(spansChunk.GetResourceSpans()))
assert.Equal(t, "foobar", spansChunk.GetResourceSpans()[0].GetInstrumentationLibrarySpans()[0].GetSpans()[0].GetName())
assert.Equal(t, "foobar", spansChunk.GetResourceSpans()[0].GetScopeSpans()[0].GetSpans()[0].GetName())
}

func TestGetTrace_storage_error(t *testing.T) {
Expand Down
Loading

0 comments on commit 8f680cc

Please sign in to comment.