Skip to content

fix(ingest): map current RPC semantic conventions to rpc_service and rpc_method - #363

Merged
vishr merged 3 commits into
mainfrom
fix/rpc-semconv
Oct 20, 2026
Merged

vishr merged 3 commits into
mainfrom
fix/rpc-semconv

Conversation

@vishr

@vishr vishr commented Oct 20, 2026

Copy link
Copy Markdown
Member

Problem

Current RPC conventions deprecate rpc.service and fold it into a fully qualified rpc.method such as oteldemo.CurrencyService/Convert. Ingest read only rpc.service and rpc.method, so those spans had an empty rpc_service and a qualified rpc_method, unlike spans from older SDKs. The OpenTelemetry Demo 3.1.0 currency service reproduces it (#362).

Change

  • When rpc.service is absent, a qualified rpc.method is split at its last / into rpc_service and rpc_method.
  • Spans that carry rpc.service keep their values; raw attributes stay unchanged in attributes.
  • No Parquet schema, batch format or query change.

Verification

  • TestTraceRPCSemanticConventions: 13 cases covering the old and new conventions, an explicit service with a qualified method, no slash, last, trailing and leading slashes, and empty or absent values.
  • just check

Fixes #362

https://claude.ai/code/session_018HfyEXHyGD1utmKF4CQtyQ

vishr added 3 commits October 20, 2026 09:47
…rpc_method

Current RPC conventions deprecate rpc.service and fold it into a fully
qualified rpc.method such as oteldemo.CurrencyService/Convert. Ingest read
only rpc.service and rpc.method, so those spans had an empty rpc_service and
a qualified rpc_method, unlike spans from older SDKs.

When rpc.service is absent, split a qualified rpc.method at its last slash
into service and method, so both columns mean the same thing whichever
convention the producer follows. Spans that carry rpc.service keep their
values, and raw attributes are unchanged. No schema or format change.

Fixes #362

Claude-Session: https://claude.ai/code/session_018HfyEXHyGD1utmKF4CQtyQ
JSON-RPC method names may contain a slash, such as LSP's textDocument/hover,
and must not become a service and method. Split a qualified rpc.method only
when rpc.system.name, or the deprecated rpc.system, is grpc or connect_rpc,
whose conventions define it as service/method.

Claude-Session: https://claude.ai/code/session_018HfyEXHyGD1utmKF4CQtyQ
Current conventions spell Connect RPC as rpc.system.name=connectrpc; the
deprecated rpc.system value is connect_rpc. Accept both, so compliant Connect
spans still split their qualified rpc.method.

Claude-Session: https://claude.ai/code/session_018HfyEXHyGD1utmKF4CQtyQ
@vishr
vishr merged commit 791714f into main Oct 20, 2026
17 checks passed
@vishr
vishr deleted the fix/rpc-semconv branch October 20, 2026 18:58
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.

fix(ingest): map current RPC semantic conventions to rpc_service and rpc_method

1 participant