[WIP]Redesign Tracing and Transport Middleware for Enhanced Observability and Extensibility #2302
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.
This PR introduces a high-level redesign of the tracing and transport middleware systems, focusing on enhancing observability, error handling, and extendability in YARPC. The key components included in this redesign are:
Implemented a comprehensive tracing interceptor (tracinginterceptor) that supports tracing across all RPC types (Unary, Oneway, and Stream).
The interceptor ensures accurate span creation, propagation, and error annotation across inbound and outbound RPC calls.
Introduced transportinterceptor, encompassing both inbound and outbound middleware (UnaryInbound, OnewayInbound, StreamInbound, UnaryOutbound, OnewayOutbound, StreamOutbound).
This new middleware layer enhances the flexibility and maintainability of transport handling by separating concerns for different RPC types.
Unified and extended tracing tag management to capture key metadata and error details for all types of RPC interactions.
Refined the mechanism for capturing and reporting application errors, ensuring consistency across spans for improved trace analysis.
Introduced unit tests for the new tracing and transport middleware components, ensuring robustness and validating the functionality of inbound, outbound, and tracing interceptors.