Skip to content

Commit 5666450

Browse files
authored
fix(eap): Update the filter provided when issuing DeleteTraceItemsRequest RPCs (#103848)
Yet another follow-up to #102808. Resolves [SENTRY-5DCB](https://sentry.sentry.io/issues/7049009648?project=1). Resolves [SENTRY-5DCN](https://sentry.sentry.io/issues/7049508299?project=1). The `EndpointDeleteTraceItems` implementation pulls `project_ids` out of the `RequestMeta`, so this field should not be included in the filters. The only filter condition we need to provide is a `ComparisonFilter.OP_IN` for the group IDs we are trying to delete for.
1 parent c16d87f commit 5666450

File tree

2 files changed

+12
-24
lines changed

2 files changed

+12
-24
lines changed

src/sentry/eventstream/eap.py

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,7 @@
1313
TraceItemType,
1414
)
1515
from sentry_protos.snuba.v1.trace_item_attribute_pb2 import AttributeKey, AttributeValue, IntArray
16-
from sentry_protos.snuba.v1.trace_item_filter_pb2 import (
17-
AndFilter,
18-
ComparisonFilter,
19-
TraceItemFilter,
20-
)
16+
from sentry_protos.snuba.v1.trace_item_filter_pb2 import ComparisonFilter, TraceItemFilter
2117

2218
from sentry.utils import snuba_rpc
2319

@@ -37,14 +33,10 @@ def delete_groups_from_eap_rpc(
3733
if not group_ids:
3834
raise ValueError("group_ids must not be empty")
3935

40-
project_filter = _create_project_filter(project_id)
4136
group_id_filter = _create_group_id_filter(list(group_ids))
42-
combined_filter = TraceItemFilter(
43-
and_filter=AndFilter(filters=[project_filter, group_id_filter])
44-
)
4537
filter_with_type = TraceItemFilterWithType(
4638
item_type=TraceItemType.TRACE_ITEM_TYPE_OCCURRENCE,
47-
filter=combined_filter,
39+
filter=group_id_filter,
4840
)
4941

5042
request = DeleteTraceItemsRequest(
@@ -62,19 +54,6 @@ def delete_groups_from_eap_rpc(
6254
return response
6355

6456

65-
def _create_project_filter(project_id: int) -> TraceItemFilter:
66-
return TraceItemFilter(
67-
comparison_filter=ComparisonFilter(
68-
key=AttributeKey(
69-
type=AttributeKey.TYPE_INT,
70-
name="sentry.project_id",
71-
),
72-
op=ComparisonFilter.OP_EQUALS,
73-
value=AttributeValue(val_int=project_id),
74-
)
75-
)
76-
77-
7857
def _create_group_id_filter(group_ids: list[int]) -> TraceItemFilter:
7958
return TraceItemFilter(
8059
comparison_filter=ComparisonFilter(

tests/sentry/eventstream/test_eap.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,16 @@ def test_deletion_with_error_dataset(self, mock_rpc):
3333
assert request.meta.project_ids == [self.project_id]
3434
assert request.meta.referrer == "deletions.group.eap"
3535
assert request.meta.cogs_category == "deletions"
36+
assert request.meta.trace_item_type == TraceItemType.TRACE_ITEM_TYPE_OCCURRENCE
3637

3738
assert len(request.filters) == 1
3839
assert request.filters[0].item_type == TraceItemType.TRACE_ITEM_TYPE_OCCURRENCE
40+
assert request.filters[0].filter.HasField("comparison_filter")
41+
assert request.filters[0].filter.comparison_filter.key.name == "sentry.group_id"
42+
assert (
43+
list(request.filters[0].filter.comparison_filter.value.val_int_array.values)
44+
== self.group_ids
45+
)
3946

4047
@patch("sentry.eventstream.eap.snuba_rpc.delete_trace_items_rpc")
4148
def test_multiple_group_ids(self, mock_rpc):
@@ -51,7 +58,9 @@ def test_multiple_group_ids(self, mock_rpc):
5158
)
5259

5360
request = mock_rpc.call_args[0][0]
54-
group_filter = request.filters[0].filter.and_filter.filters[1]
61+
group_filter = request.filters[0].filter
62+
assert group_filter.HasField("comparison_filter")
63+
assert group_filter.comparison_filter.key.name == "sentry.group_id"
5564
assert list(group_filter.comparison_filter.value.val_int_array.values) == many_group_ids
5665

5766
@patch("sentry.eventstream.eap.snuba_rpc.delete_trace_items_rpc")

0 commit comments

Comments
 (0)