-
Notifications
You must be signed in to change notification settings - Fork 539
Autopropagating versioning headers everywhere #11399
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Web viewer built successfully.
Note: This comment is updated whenever you push a commit. |
c7d6aec
to
465d830
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR implements autopropagating versioning headers throughout the Rerun system by moving OTEL service name initialization earlier and adding comprehensive version tracking for gRPC client-server communication.
- Moves
OTEL_SERVICE_NAME
environment variable setup to occur before telemetry initialization - Adds client and server version headers that are automatically propagated in gRPC requests
- Updates telemetry middleware to capture and log version information from both clients and servers
Reviewed Changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.
Show a summary per file
File | Description |
---|---|
rerun_py/src/python_bridge.rs | Moves OTEL service name setup outside telemetry initialization |
crates/utils/re_perf_telemetry/src/grpc.rs | Adds version header extraction and logging to gRPC telemetry middleware |
crates/top/rerun/src/commands/entrypoint.rs | Moves OTEL service name setup earlier in initialization |
crates/store/re_server/src/server.rs | Adds version headers layer to server gRPC middleware |
crates/store/re_redap_client/src/grpc.rs | Updates client type definitions and adds version headers layer |
crates/store/re_protos/src/headers.rs | Implements version header constants and interceptor infrastructure |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
let mut name = name | ||
.or_else(|| std::env::var("OTEL_SERVICE_NAME").ok()) | ||
.or_else(|| { | ||
let path = std::env::current_exe().ok()?; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: isn't the exe and CARGO_PGK the same for all services for now since we have a single entry point? (I guess not for the CLI, but there was a dicussion where we said it would not be too bad of a an idea to also have the CLI in the same binary).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CARGO_PKG
is the worst of them all: it will always be re_protos
in this instance. So yeah, it's just layers of best effort in increasing order of shittiness 🫠
TODO * DNM: requires #11391 * Sibling: rerun-io/dataplatform#1780
TODO