Skip to content

Commit ae0e505

Browse files
authored
fix(aci): Fix Stateful Detector counter reset (#103179)
When operating on a particular group key, the counter reset should only target that group key.
1 parent 87cee2f commit ae0e505

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/sentry/workflow_engine/handlers/detector/stateful.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ def evaluate(
403403
# Reset counters if any were incremented while evaluating a
404404
# different priority (but not reaching thresholds)
405405
if any(state_data.counter_updates.values()):
406-
self.state_manager.enqueue_counter_reset()
406+
self.state_manager.enqueue_counter_reset(group_key)
407407

408408
continue
409409

tests/sentry/workflow_engine/handlers/detector/test_stateful.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,26 @@ def test_evaluate__low_threshold_larger_than_high(self) -> None:
403403
assert state_data.is_triggered is True
404404
assert state_data.status == Level.LOW
405405

406+
def test_evaluate__counter_reset_for_non_none_group_key(self) -> None:
407+
self.group_key = "group1"
408+
409+
# Trigger HIGH priority
410+
result = self.handler.evaluate(self.packet(1, Level.HIGH))
411+
assert result == {}
412+
result = self.handler.evaluate(self.packet(2, Level.HIGH))
413+
assert result[self.group_key].priority == Level.HIGH
414+
415+
# Evaluate again at HIGH priority (same as current state)
416+
result = self.handler.evaluate(self.packet(3, Level.HIGH))
417+
assert result == {}
418+
419+
# Evaluate at MEDIUM priority - should require 2 evaluations to trigger
420+
result = self.handler.evaluate(self.packet(4, Level.MEDIUM))
421+
assert result == {}
422+
423+
result = self.handler.evaluate(self.packet(5, Level.MEDIUM))
424+
assert result[self.group_key].priority == Level.MEDIUM
425+
406426
def test_evaluate__condition_hole(self):
407427
detector = self.create_detector(
408428
name="Stateful Detector",

0 commit comments

Comments
 (0)