-
Notifications
You must be signed in to change notification settings - Fork 70
feat(observability): [POC] add no-op implementation of tracing #4045
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
base: main
Are you sure you want to change the base?
Conversation
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.
Code Review
This pull request introduces a no-op implementation for tracing, which is a great first step towards full observability. The new classes and interfaces for tracing are well-structured. I've found a few areas for improvement, mainly concerning code correctness in a test setup, and some opportunities to improve encapsulation and prepare for the full implementation by aligning more closely with the existing metrics implementation. My comments provide specific suggestions for these points.
java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITOtelMetrics.java
Outdated
Show resolved
Hide resolved
gax-java/gax/src/main/java/com/google/api/gax/tracing/OpenTelemetryTracingRecorder.java
Outdated
Show resolved
Hide resolved
gax-java/gax/src/main/java/com/google/api/gax/tracing/TracingTracerFactory.java
Outdated
Show resolved
Hide resolved
gax-java/gax/src/main/java/com/google/api/gax/tracing/TracingTracerFactory.java
Show resolved
Hide resolved
…metryTracingRecorder.java Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…eapis/sdk-platform-java into observability/tracing-noop
|
WIP as there are pending design decisions for the feature flag. |
…eapis/sdk-platform-java into observability/tracing-noop
…eapis/sdk-platform-java into observability/tracing-noop
|
|
gax-java/gax/src/main/java/com/google/api/gax/tracing/TracingUtils.java
Outdated
Show resolved
Hide resolved
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [com.google.cloud:grpc-gcp](https://togithub.com/GoogleCloudPlatform/grpc-gcp-java/tree/master/grpc-gcp) ([source](https://togithub.com/GoogleCloudPlatform/grpc-gcp-java)) | patch | `1.9.0` -> `1.9.1` | | [com.google.errorprone:error_prone_annotations](https://errorprone.info) ([source](https://togithub.com/google/error-prone)) | minor | `2.45.0` -> `2.46.0` | | [com.google.http-client:google-http-client](https://togithub.com/googleapis/google-http-java-client) | patch | `2.0.2` -> `2.0.3` | | [com.google.protobuf:protobuf-java](https://developers.google.com/protocol-buffers/) ([source](https://togithub.com/protocolbuffers/protobuf)) | patch | `4.33.1` -> `4.33.4` | | [commons-codec:commons-codec](https://commons.apache.org/proper/commons-codec/) ([source](https://togithub.com/apache/commons-codec)) | minor | `1.19.0` -> `1.20.0` | | [io.opentelemetry:opentelemetry-bom](https://togithub.com/open-telemetry/opentelemetry-java) | minor | `1.57.0` -> `1.58.0` | | [org.apache.httpcomponents.client5:httpclient5](https://hc.apache.org/) | minor | `5.5.1` -> `5.6` | | [org.apache.httpcomponents.core5:httpcore5](https://hc.apache.org/) | minor | `5.3.6` -> `5.4` | --- ### Release Notes <details> <summary>GoogleCloudPlatform/grpc-gcp-java (com.google.cloud:grpc-gcp)</summary> ### [`v1.9.1`](https://togithub.com/GoogleCloudPlatform/grpc-gcp-java/releases/tag/v1.9.1) [Compare Source](https://togithub.com/GoogleCloudPlatform/grpc-gcp-java/compare/v1.9.0...v1.9.1) #### What's Changed - fix: race for metrics values. Plus fix log metrics when reported via otel callbacks by [@​nimf](https://togithub.com/nimf) in [https://github.com/GoogleCloudPlatform/grpc-gcp-java/pull/228](https://togithub.com/GoogleCloudPlatform/grpc-gcp-java/pull/228) **Full Changelog**: GoogleCloudPlatform/grpc-gcp-java@v1.9.0...v1.9.1 </details> <details> <summary>google/error-prone (com.google.errorprone:error_prone_annotations)</summary> ### [`v2.46.0`](https://togithub.com/google/error-prone/releases/tag/v2.46.0): Error Prone 2.46.0 [Compare Source](https://togithub.com/google/error-prone/compare/v2.45.0...v2.46.0) Changes: - The javac flag `-XDaddTypeAnnotationsToSymbol=true` is now required for Error Prone invocations on JDK 21, to enable the javac fix for [JDK-8225377: type annotations are not visible to javac plugins across compilation boundaries](https://bugs.openjdk.org/browse/JDK-8225377). See [https://github.com/google/error-prone/issues/5426](https://togithub.com/google/error-prone/issues/5426) for details. - Remove deprecated `value` attribute from `@IncompatibleModifiers` and `@RequiredModifiers` ([https://github.com/google/error-prone/issues/2122](https://togithub.com/google/error-prone/issues/2122)) - Error Prone API changes to encapsulate references to internal javac APIs for end position handling (`EndPosTable`, `DiagnosticPosition`) (google/error-prone@5440bb4, google/error-prone@06c2905, google/error-prone@f3915ec) New checks: - [`DuplicateAssertion`](https://errorprone.info/bugpattern/DuplicateAssertion): detect duplicated assertion lines where the argument to `assertThat` is pure - [`IfChainToSwitch`](https://errorprone.info/bugpattern/IfChainToSwitch): suggest converting chains of if-statements into arrow switches - [`ScannerUseDelimiter`](https://errorprone.info/bugpattern/ScannerUseDelimiter): discourage `Scanner.useDelimiter("\\A")` - [`AddNullMarkedToClass`](https://errorprone.info/bugpattern/AddNullMarkedToClass): refactoring to add `@NullMarked` annotation to top level classes </details> <details> <summary>googleapis/google-http-java-client (com.google.http-client:google-http-client)</summary> ### [`v2.0.3`](https://togithub.com/googleapis/google-http-java-client/blob/HEAD/CHANGELOG.md#203-2025-12-19) [Compare Source](https://togithub.com/googleapis/google-http-java-client/compare/v2.0.2...v2.0.3) ##### Bug Fixes - **apache5:** Set connection request timeout on setTimeout ([#​2129](https://togithub.com/googleapis/google-http-java-client/issues/2129)) ([d11d794](https://togithub.com/googleapis/google-http-java-client/commit/d11d794d452a662bddd4402cd5d3895bcbe769f3)) </details> <details> <summary>apache/commons-codec (commons-codec:commons-codec)</summary> ### [`v1.20.0`](https://togithub.com/apache/commons-codec/blob/HEAD/RELEASE-NOTES.txt#Apache-Commons-Codec-1200-Release-Notes) The Apache Commons Codec team is pleased to announce the release of Apache Commons Codec 1.20.0. The Apache Commons Codec component contains encoders and decoders for formats such as Base16, Base32, Base64, digest, and Hexadecimal. In addition to these widely used encoders and decoders, the codec package also maintains a collection of phonetic encoding utilities. This is a feature and maintenance release. Java 8 or later is required. </details> <details> <summary>open-telemetry/opentelemetry-java (io.opentelemetry:opentelemetry-bom)</summary> ### [`v1.58.0`](https://togithub.com/open-telemetry/opentelemetry-java/blob/HEAD/CHANGELOG.md#Version-1580-2026-01-09) [Compare Source](https://togithub.com/open-telemetry/opentelemetry-java/compare/v1.57.0...v1.58.0) ##### API ##### Incubator - Delete GlobalConfigProvider in favor of access via ExtendedOpenTelemetry ([#​7914](https://togithub.com/open-telemetry/opentelemetry-java/pull/7914)) - Add DeclarativeConfigProperties#get method ([#​7923](https://togithub.com/open-telemetry/opentelemetry-java/pull/7923)) - Update ConfigProvider#getInstrumentationConfig response to be non-null ([#​7954](https://togithub.com/open-telemetry/opentelemetry-java/pull/7954)) - Add declarative config utility methods for common operations ([#​7927](https://togithub.com/open-telemetry/opentelemetry-java/pull/7927)) ##### SDK ##### Traces - Implement SDK metrics for trace ([#​7895](https://togithub.com/open-telemetry/opentelemetry-java/pull/7895), [#​7930](https://togithub.com/open-telemetry/opentelemetry-java/pull/7930)) - Emit warning when TraceIdRatioBasedSampler is used as child sampler ([#​7937](https://togithub.com/open-telemetry/opentelemetry-java/pull/7937)) ##### Logs - Implement SDK metrics for logs ([#​7931](https://togithub.com/open-telemetry/opentelemetry-java/pull/7931)) ##### Exporters - Prom exporter update ([#​7934](https://togithub.com/open-telemetry/opentelemetry-java/pull/7934)) ##### Extensions - Declarative config: update to opentelemetry-configuration 1.0.0-rc.3 ([#​7861](https://togithub.com/open-telemetry/opentelemetry-java/pull/7861)) - Declarative config: update jaeger remote sampler to require endpoint, initial_sampler ([#​7943](https://togithub.com/open-telemetry/opentelemetry-java/pull/7943)) - Declarative config: add support for view unit ([#​7942](https://togithub.com/open-telemetry/opentelemetry-java/pull/7942)) - Declarative config: add support for new logger config minimum_severity and trace_based properties ([#​7940](https://togithub.com/open-telemetry/opentelemetry-java/pull/7940)) - Declarative config: add support for composable parent threshold sampler ([#​7941](https://togithub.com/open-telemetry/opentelemetry-java/pull/7941)) - Declarative config: improve pattern for validating and loading SDK extension plugins ([#​7947](https://togithub.com/open-telemetry/opentelemetry-java/pull/7947)) ##### Project tooling - Use develocity build cache in PRs and local builds ([#​7906](https://togithub.com/open-telemetry/opentelemetry-java/pull/7906)) - Configure japicmp classpath to avoid false positives ([#​7945](https://togithub.com/open-telemetry/opentelemetry-java/pull/7945)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40NDAuNyIsInVwZGF0ZWRJblZlciI6IjM3LjQ0MC43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
chore: update googleapis commit at Wed Dec 10 02:37:02 UTC 2025
🤖 I have created a release *beep* *boop* --- <details><summary>2.65.0</summary> ## [2.65.0](v2.64.2...v2.65.0) (2026-01-12) ### Features * add org.json:json to third-party-dependencies pom ([#4047](#4047)) ([ffa432e](ffa432e)), closes [#4046](#4046) * remove dependency management of graal-sdk ([#4033](#4033)) ([ad05c34](ad05c34)) ### Bug Fixes * add api_version breadcrumb to client docs ([#4018](#4018)) ([a2b2179](a2b2179)) * Create a single S2AChannelCredentials per application ([#3989](#3989)) ([3758b43](3758b43)) * provide API to share the same background executor for channel po… ([#4030](#4030)) ([178182c](178182c)) ### Dependencies * update dependencies.txt for grpc-gcp to 1.9.0 ([#4025](#4025)) ([b68791d](b68791d)) * update google api dependencies ([#3917](#3917)) ([480cf13](480cf13)) * update google.http-client.version to 2.0.3 ([#4054](#4054)) ([b9a8c89](b9a8c89)) ### Documentation * Fix retry guide link in javadocs ([#4029](#4029)) ([b43f77c](b43f77c)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
[GoogleCredentialsProvider#setScopesToApply](https://github.com/googleapis/sdk-platform-java/blob/b9a8c8924e7b03bca8a97e476abfd012b86f6d45/gax-java/gax/src/main/java/com/google/api/gax/core/GoogleCredentialsProvider.java#L123) would only work if the underlying credentials require the scopes to be set. Update the docs to reflect the intended behavior. Fixes #3738
🤖 I have created a release *beep* *boop* --- <details><summary>2.65.1-SNAPSHOT</summary> ### Updating meta-information for bleeding-edge SNAPSHOT release. </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
The downstream libraries' clirr check are failing due to protobuf rc release. For example, [java-bigtable](googleapis/java-bigtable#2737). Skipping clirr check in sdk-platform-java-config so we don't have to skip it for each downstream library. We should re-enable them after protobuf upgrade is completed. Co-authored-by: Diego Marquez <diegomarquezp@google.com>
🤖 I have created a release *beep* *boop* --- <details><summary>2.65.1</summary> ## [2.65.1](v2.65.0...v2.65.1) (2026-01-13) ### Documentation * Update docs for GoogleCredentialsProvider#setScopesToApply ([#4057](#4057)) ([0a9962f](0a9962f)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Diego Marquez <diegomarquezp@google.com>
This PR cleans up the .github/release-please.yml file by removing redundant options and the bump-minor-pre-major setting for major releases.


POC - minimal implementation of Tracing (T4) with a dummy "lowLevelNetworkSpan".