Skip to content

Commit 583eaa4

Browse files
committed
remove excessive fetching from nodestore for group events
1 parent 8b2c2ac commit 583eaa4

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

src/sentry/rules/processing/delayed_processing.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -498,13 +498,15 @@ def fire_rules(
498498
timedelta(seconds=40),
499499
extra={"project_id": project_id},
500500
) as tracker:
501+
groups_to_fire = set().union(*rules_to_fire.values())
502+
group_to_groupevent = get_group_to_groupevent(
503+
parsed_rulegroup_to_event_data, project_id, groups_to_fire
504+
)
505+
group_id_to_group = {group.id: group for group in group_to_groupevent.keys()}
501506
for rule, group_ids in rules_to_fire.items():
502507
with tracker.track(f"rule_{rule.id}"):
503508
frequency = rule.data.get("frequency") or Rule.DEFAULT_FREQUENCY
504509
freq_offset = now - timedelta(minutes=frequency)
505-
group_to_groupevent = get_group_to_groupevent(
506-
log_config, parsed_rulegroup_to_event_data, project.id, group_ids
507-
)
508510
if (
509511
log_config.num_events_issue_debugging
510512
or log_config.workflow_engine_process_workflows
@@ -521,7 +523,19 @@ def fire_rules(
521523
"rule_id": rule.id,
522524
},
523525
)
524-
for group, groupevent in group_to_groupevent.items():
526+
for group_id in group_ids:
527+
group = group_id_to_group.get(group_id)
528+
if not group:
529+
logger.info(
530+
"delayed_processing.group_not_found",
531+
extra={
532+
"rule_id": rule.id,
533+
"group_id": group_id,
534+
"project_id": project_id,
535+
},
536+
)
537+
continue
538+
525539
rule_statuses = bulk_get_rule_status(alert_rules, group, project)
526540
status = rule_statuses[rule.id]
527541
if status.last_active and status.last_active > freq_offset:

0 commit comments

Comments
 (0)