diff --git a/snuba/web/rpc/v1/endpoint_trace_item_table.py b/snuba/web/rpc/v1/endpoint_trace_item_table.py index 33a4000a13..bc16b6b72b 100644 --- a/snuba/web/rpc/v1/endpoint_trace_item_table.py +++ b/snuba/web/rpc/v1/endpoint_trace_item_table.py @@ -11,6 +11,9 @@ from snuba.web.rpc import RPCEndpoint, TraceItemDataResolver from snuba.web.rpc.common.exceptions import BadSnubaRPCRequestException from snuba.web.rpc.v1.resolvers import ResolverTraceItemTable +from snuba.web.rpc.v1.visitors.sparse_aggregate_attribute_transformer import ( + SparseAggregateAttributeTransformer, +) _GROUP_BY_DISALLOWED_COLUMNS = ["timestamp"] @@ -69,6 +72,14 @@ def _validate_order_by(in_msg: TraceItemTableRequest) -> None: ) +def _transform_request(request: TraceItemTableRequest) -> TraceItemTableRequest: + """ + This function is for initial processing and transformation of the request after recieving it. + It is similar to the query processor step of the snql pipeline. + """ + return SparseAggregateAttributeTransformer(request).transform() + + class EndpointTraceItemTable( RPCEndpoint[TraceItemTableRequest, TraceItemTableResponse] ): @@ -103,5 +114,8 @@ def _execute(self, in_msg: TraceItemTableRequest) -> TraceItemTableResponse: raise BadSnubaRPCRequestException( "This endpoint requires meta.trace_item_type to be set (are you requesting spans? logs?)" ) + + in_msg = _transform_request(in_msg) + resolver = self.get_resolver(in_msg.meta.trace_item_type) return resolver.resolve(in_msg) diff --git a/snuba/web/rpc/v1/resolvers/R_eap_spans/resolver_trace_item_table.py b/snuba/web/rpc/v1/resolvers/R_eap_spans/resolver_trace_item_table.py index 2694040558..5408e56075 100644 --- a/snuba/web/rpc/v1/resolvers/R_eap_spans/resolver_trace_item_table.py +++ b/snuba/web/rpc/v1/resolvers/R_eap_spans/resolver_trace_item_table.py @@ -52,9 +52,6 @@ get_confidence_interval_column, get_count_column, ) -from snuba.web.rpc.v1.visitors.sparse_aggregate_attribute_transformer import ( - SparseAggregateAttributeTransformer, -) _DEFAULT_ROW_LIMIT = 10_000 @@ -132,9 +129,6 @@ def _convert_order_by( def _build_query(request: TraceItemTableRequest) -> Query: - # this is similar to the query processor step of the snql pipeline - request = SparseAggregateAttributeTransformer(request).transform() - # TODO: This is hardcoded still entity = Entity( key=EntityKey("eap_spans"),