opentelemetry-sampler-jaeger-remote: add support for Jaeger remote sampler#4775
Open
herin049 wants to merge 17 commits into
Open
opentelemetry-sampler-jaeger-remote: add support for Jaeger remote sampler#4775herin049 wants to merge 17 commits into
herin049 wants to merge 17 commits into
Conversation
There was a problem hiding this comment.
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-remotepackage (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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds support for the Jaeger remote sampler.
Fixes #4774
Type of change
Please delete options that are not relevant.
How Has This Been Tested?
Does This PR Require a Core Repo Change?
Checklist:
See contributing.md for styleguide, changelog guidelines, and more.