Skip to content

JsonReader and protobuf-free partial-success response parsing #113

Closed

Description

@ltowarek

Parent

Part of #102

What to build

Partial-success responses parsed and logged without protobuf, so the OTLP HTTP client no longer depends on the protobuf JSON-to-message path on its read side. Rejected counts and error messages stay visible, which matters on a device with no other diagnostic channel.

Target: opentelemetry-cpp fork, branch otlp-json-no-protobuf.

The reader is deliberately document-shaped rather than token-shaped, roughly five accessors. The asymmetry with the writer is intentional and should be stated explicitly when this is proposed upstream: the writer handles unbounded telemetry batches where streaming matters, while the reader handles a two-field response where a pull parser would be pure cost.

Acceptance criteria

  • A minimal JsonReader interface exists with an nlohmann-backed default
  • The response path parses partial-success fields without protobuf
  • Rejected counts and error messages are logged through the SDK internal log handler
  • A malformed or truncated response body is handled without crashing and without exceptions
  • An empty or absent body is treated as full success, as before
  • The asymmetry with the writer is documented in the interface

Blocked by

Activity

  1. ltowarek commented on Sep 11, 2026

    @ltowarek
    OwnerAuthor

    Implemented in ltowarek/opentelemetry-cpp@974fcfbe6e2c1c48188d883eecc6cd4a4a9dffb1 ("Parse OTLP/JSON partial-success responses without protobuf", branch otlp-json-no-protobuf), which adds JsonReader/JsonReaderFactory with an nlohmann-backed default and the OTLP-aware partial-success parsing/logging on top of it. Wired into the actual exporters in @dcae47269dc3cbd91fea366f550b4517edb550b6, which is what makes the read path reachable end to end.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestready-for-agentFully specified, ready for an AFK agent

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions