Skip to content

opentelemetry-sampler-jaeger-remote: add support for Jaeger remote sampler#4775

Open
herin049 wants to merge 17 commits into
open-telemetry:mainfrom
herin049:feat/jaeger-remote-sampler
Open

opentelemetry-sampler-jaeger-remote: add support for Jaeger remote sampler#4775
herin049 wants to merge 17 commits into
open-telemetry:mainfrom
herin049:feat/jaeger-remote-sampler

Conversation

@herin049

@herin049 herin049 commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Description

Adds support for the Jaeger remote sampler.

Fixes #4774

Type of change

Please delete options that are not relevant.

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

How Has This Been Tested?

uv run tox -e py314-test-sampler-jaeger-remote-latest

Does This PR Require a Core Repo Change?

  • Yes. - Link to PR:
  • No.

Checklist:

See contributing.md for styleguide, changelog guidelines, and more.

  • Followed the style guidelines of this project
  • Changelogs have been updated
  • Unit tests have been added
  • Documentation has been updated

@herin049 herin049 marked this pull request as ready for review July 10, 2026 03:44
@herin049 herin049 requested a review from a team as a code owner July 10, 2026 03:44
@herin049 herin049 requested a review from Copilot July 11, 2026 21:16

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new contrib package (opentelemetry-sampler-jaeger-remote) implementing the OpenTelemetry Jaeger remote sampler (per spec), including HTTP (protobuf-JSON) and gRPC providers, plus CI/test wiring to run the new package across the repo’s tox/GitHub Actions matrices.

Changes:

  • Introduce the new opentelemetry-sampler-jaeger-remote package (sampler implementation, providers, vendored proto + generated bindings).
  • Add unit tests and per-package test requirement locks (oldest/latest).
  • Wire the package into the monorepo workspace, tox envs, and GitHub Actions test/lint workflows.

Reviewed changes

Copilot reviewed 35 out of 38 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
uv.lock Adds the new sampler package to the uv workspace lock and dependency graph.
tox.ini Adds tox test/lint envs and dependency wiring for the new sampler package.
scripts/jaeger_remote_proto_json_codegen.sh Script to regenerate JSON codec code from the vendored proto.
scripts/jaeger_remote_proto_codegen.sh Script to regenerate protobuf + gRPC Python bindings from the vendored proto.
sampler/opentelemetry-sampler-jaeger-remote/tests/test_samplers.py Unit tests for sampler strategy implementations.
sampler/opentelemetry-sampler-jaeger-remote/tests/test_ratelimiter.py Unit tests for token-bucket rate limiter behavior and thread-safety.
sampler/opentelemetry-sampler-jaeger-remote/tests/test_jaeger_remote_sampler.py Unit tests for the polling sampler wrapper and lifecycle behavior.
sampler/opentelemetry-sampler-jaeger-remote/tests/test_http_provider.py Unit tests for HTTP strategy provider behavior, retries, and decoding.
sampler/opentelemetry-sampler-jaeger-remote/tests/test_grpc_provider.py Unit tests for gRPC strategy provider behavior, retries, and decoding.
sampler/opentelemetry-sampler-jaeger-remote/tests/init.py Declares test package.
sampler/opentelemetry-sampler-jaeger-remote/test-requirements.oldest.txt Locked “oldest” dependency set for tests.
sampler/opentelemetry-sampler-jaeger-remote/test-requirements.latest.txt Locked “latest” dependency set for tests.
sampler/opentelemetry-sampler-jaeger-remote/test-requirements.in Input requirements used to generate the locked test requirement files.
sampler/opentelemetry-sampler-jaeger-remote/src/opentelemetry/sampler/jaeger/remote/version.py Defines the package version.
sampler/opentelemetry-sampler-jaeger-remote/src/opentelemetry/sampler/jaeger/remote/py.typed Marks the package as typed for type checkers.
sampler/opentelemetry-sampler-jaeger-remote/src/opentelemetry/sampler/jaeger/remote/proto/sampling_pb2.pyi Generated mypy-protobuf stubs for the vendored sampling proto.
sampler/opentelemetry-sampler-jaeger-remote/src/opentelemetry/sampler/jaeger/remote/proto/sampling_pb2.py Generated protobuf runtime code for the vendored sampling proto.
sampler/opentelemetry-sampler-jaeger-remote/src/opentelemetry/sampler/jaeger/remote/proto/sampling_pb2_grpc.py Generated gRPC stubs for the vendored sampling proto.
sampler/opentelemetry-sampler-jaeger-remote/src/opentelemetry/sampler/jaeger/remote/proto/init.py Declares the protobuf module package.
sampler/opentelemetry-sampler-jaeger-remote/src/opentelemetry/sampler/jaeger/remote/proto_json/sampling.py Generated protobuf-JSON codec message types for HTTP decoding.
sampler/opentelemetry-sampler-jaeger-remote/src/opentelemetry/sampler/jaeger/remote/proto_json/_json_codec.py JSON codec helpers used by generated proto_json code.
sampler/opentelemetry-sampler-jaeger-remote/src/opentelemetry/sampler/jaeger/remote/proto_json/init.py Declares the proto_json module package.
sampler/opentelemetry-sampler-jaeger-remote/src/opentelemetry/sampler/jaeger/remote/_samplers.py Implements strategy-specific Sampler implementations.
sampler/opentelemetry-sampler-jaeger-remote/src/opentelemetry/sampler/jaeger/remote/_ratelimiter.py Implements a token bucket rate limiter used by samplers.
sampler/opentelemetry-sampler-jaeger-remote/src/opentelemetry/sampler/jaeger/remote/_provider.py Defines provider abstraction and strategy data structures.
sampler/opentelemetry-sampler-jaeger-remote/src/opentelemetry/sampler/jaeger/remote/_http_provider.py Implements HTTP strategy provider with retry/backoff and JSON decoding.
sampler/opentelemetry-sampler-jaeger-remote/src/opentelemetry/sampler/jaeger/remote/_grpc_provider.py Implements gRPC strategy provider with retry/backoff and decoding.
sampler/opentelemetry-sampler-jaeger-remote/src/opentelemetry/sampler/jaeger/remote/init.py Implements the polling JaegerRemoteSampler wrapper and provider selection.
sampler/opentelemetry-sampler-jaeger-remote/sampling.proto Vendored Jaeger sampling.proto (with noted stripping) used for codegen.
sampler/opentelemetry-sampler-jaeger-remote/README.rst Package readme and basic installation info.
sampler/opentelemetry-sampler-jaeger-remote/pyproject.toml Package metadata, dependencies, and build configuration.
sampler/opentelemetry-sampler-jaeger-remote/gen-requirements.txt Pinned generator tool deps for protobuf / JSON code generation.
pyproject.toml Adds the new sampler package to the root workspace/dependencies and adjusts ruff excludes.
.pylintrc Excludes generated proto_json directory from pylint scanning.
.github/workflows/test.yml Adds CI jobs for sampler-jaeger-remote across Python versions and oldest/latest deps.
.github/workflows/lint.yml Adds CI lint job for sampler-jaeger-remote.
.github/workflows/core_contrib_test.yml Adds core+contrib integration test jobs for the new sampler package.
.changelog/4775.added Adds changelog entry for the new sampler feature.
Files not reviewed (1)
  • sampler/opentelemetry-sampler-jaeger-remote/src/opentelemetry/sampler/jaeger/remote/proto/sampling_pb2.py: Generated file

Comment thread scripts/jaeger_remote_proto_json_codegen.sh Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

Jaeger remote sampler

2 participants