Skip to content

impl(o11y): introduce error attributes#12189

Draft
diegomarquezp wants to merge 5 commits intomainfrom
observability/tracing-attr-error-type-transfer
Draft

impl(o11y): introduce error attributes#12189
diegomarquezp wants to merge 5 commits intomainfrom
observability/tracing-attr-error-type-transfer

Conversation

@diegomarquezp
Copy link
Contributor

@diegomarquezp diegomarquezp commented Mar 24, 2026

Ports the error.type and status.message telemetry features from sdk-platform-java.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly refines the tracing telemetry by introducing dedicated attributes for error types, exception types, and status messages. These additions provide a more detailed and standardized way to categorize and understand failures occurring within client-side operations, improving observability and debugging capabilities. The changes ensure that critical error information is consistently captured in OpenTelemetry spans, offering clearer insights into the root causes of issues.

Highlights

  • Enhanced Error Telemetry: Introduced new OpenTelemetry attributes (error.type, status.message, exception.type) to provide more granular details on client-side errors within tracing spans.
  • Standardized Error Type Extraction: Added a new utility class ErrorTypeUtil to consistently extract low-cardinality error types from Throwable objects, prioritizing google.rpc.ErrorInfo.reason, client-side network/operational errors, specific server codes, and language-specific exception names.
  • Span Attribute Population: Modified SpanTracer to automatically populate the new error telemetry attributes on attempt spans when operations fail, including a recursive search for the most relevant error message.
  • API Tracer Update: Extended the ApiTracer interface with a new default method requestSent(long requestSize) to allow for tracking the size of streaming requests.
  • Comprehensive Testing: Added extensive unit and integration tests to validate the correct extraction and recording of error types and messages across various client-side and server-side failure scenarios for both gRPC and HTTP/JSON transports.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a 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 new ErrorTypeUtil class to provide a standardized way of classifying exceptions into specific error types (e.g., client timeout, connection error, authentication error) for OpenTelemetry tracing. It adds new observability attributes (error.type, exception.type, status.message) and integrates this error classification into the SpanTracer to enrich span data upon failed attempts. The changes also include comprehensive unit and integration tests to validate the new error type extraction and tracing functionality. Feedback from the review includes correcting incorrect copyright years, removing redundant semicolons and toString() overrides, and updating Javadoc for accuracy.

@diegomarquezp diegomarquezp changed the title feat: Refine tracing telemetry for client-side attributes impl(o11y): introduce error attributes Mar 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant