Skip to content

traces/rbac: use gogo/protobuf to match Tempo marshalling lib - #935

Closed
andreasgerstmayr wants to merge 1 commit into
observatorium:mainfrom
andreasgerstmayr:fix/traces-rbac-use-gogo-jsonpb
Closed

andreasgerstmayr wants to merge 1 commit into
observatorium:mainfrom
andreasgerstmayr:fix/traces-rbac-use-gogo-jsonpb

Conversation

@andreasgerstmayr

Copy link
Copy Markdown
Contributor

The response RBAC modifier unmarshals a Tempo API response, filters it, and re-marshals it. To stay compliant with Tempo's API, that round-trip must produce output identical to what Tempo sends, which means it has to (un)marshal with the same library Tempo uses: gogo/protobuf.

This code used golang/protobuf's jsonpb instead, which disagrees with gogo on empty repeated fields (gogo emits "[]", golang/protobuf omits them). A zero-result /api/search therefore came back without the "traces" field instead of Tempo's {"traces":[],...}.

Switch to gogo's jsonpb/proto so the modifier's output matches Tempo marshalling and "traces" field is always present.

The response RBAC modifier unmarshals a Tempo API response, filters it,
and re-marshals it. To stay compliant with Tempo's API, that round-trip
must produce output identical to what Tempo sends, which means it has to
(un)marshal with the same library Tempo uses: gogo/protobuf.

This code used golang/protobuf's jsonpb instead, which disagrees with
gogo on empty repeated fields (gogo emits "[]", golang/protobuf omits
them). A zero-result /api/search therefore came back without the "traces"
field instead of Tempo's {"traces":[],...}.

Switch to gogo's jsonpb/proto so the modifier's output matches Tempo
marshalling and "traces" field is always present.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@andreasgerstmayr
andreasgerstmayr force-pushed the fix/traces-rbac-use-gogo-jsonpb branch from 643cae9 to 57a5f83 Compare September 23, 2026 09:36
@andreasgerstmayr

Copy link
Copy Markdown
Contributor Author

Oh, this is basically the same as #934 (I worked on it yesterday but forgot to push). Main difference is that it uses gogo for both protobuf/jsonpb and protobuf/proto, to mirror Tempo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant