File tree 2 files changed +32
-3
lines changed
src/sentry/rules/processing
tests/sentry/rules/processing
2 files changed +32
-3
lines changed Original file line number Diff line number Diff line change @@ -297,12 +297,17 @@ def get_group_to_groupevent(
297
297
groups = Group .objects .filter (id__in = group_ids )
298
298
group_id_to_group = {group .id : group for group in groups }
299
299
300
+ # Filter down to only the event data for the groups we've been asked to process.
301
+ relevant_rulegroup_to_event_data = {
302
+ key : value for key , value in parsed_rulegroup_to_event_data .items () if key [1 ] in group_ids
303
+ }
304
+
300
305
# Use a list comprehension for event_ids
301
306
event_ids : list [str ] = [
302
307
event_id
303
308
for event_id in (
304
309
instance_data .get ("event_id" )
305
- for instance_data in parsed_rulegroup_to_event_data .values ()
310
+ for instance_data in relevant_rulegroup_to_event_data .values ()
306
311
)
307
312
if event_id is not None
308
313
]
@@ -312,7 +317,7 @@ def get_group_to_groupevent(
312
317
occurrence_id
313
318
for occurrence_id in (
314
319
instance_data .get ("occurrence_id" )
315
- for instance_data in parsed_rulegroup_to_event_data .values ()
320
+ for instance_data in relevant_rulegroup_to_event_data .values ()
316
321
)
317
322
if occurrence_id is not None
318
323
]
@@ -325,7 +330,7 @@ def get_group_to_groupevent(
325
330
}
326
331
327
332
return build_group_to_groupevent (
328
- parsed_rulegroup_to_event_data ,
333
+ relevant_rulegroup_to_event_data ,
329
334
bulk_event_id_to_events ,
330
335
bulk_occurrence_id_to_occurrence ,
331
336
group_id_to_group ,
Original file line number Diff line number Diff line change @@ -378,6 +378,30 @@ def test_invalid_group_ids(self):
378
378
result = get_group_to_groupevent (self .parsed_data , self .project .id , {0 })
379
379
assert len (result ) == 0
380
380
381
+ def test_filtered_group_ids (self ):
382
+ """Test that get_group_to_groupevent only requests events for specified group IDs."""
383
+ # Track which event IDs are requested
384
+ requested_event_ids = set ()
385
+
386
+ original_bulk_fetch_events = bulk_fetch_events
387
+
388
+ def mock_bulk_fetch_events (event_ids , project_id ):
389
+ requested_event_ids .update (event_ids )
390
+ return original_bulk_fetch_events (event_ids , project_id )
391
+
392
+ with patch (
393
+ "sentry.rules.processing.delayed_processing.bulk_fetch_events" ,
394
+ side_effect = mock_bulk_fetch_events ,
395
+ ):
396
+ # Call get_group_to_groupevent with only group1
397
+ result = get_group_to_groupevent (self .parsed_data , self .project .id , {self .group1 .id })
398
+
399
+ # Verify only event1 was requested
400
+ assert requested_event_ids == {self .event1 .event_id }
401
+ assert len (result ) == 1
402
+ assert result [self .group1 ] == self .event1
403
+ assert self .group2 not in result
404
+
381
405
382
406
class GetRulesToFireTest (TestCase ):
383
407
def setUp (self ):
You can’t perform that action at this time.
0 commit comments