Files
git.stella-ops.org/docs/features/unchecked/notifier/digest-windows-and-throttling.md

2.8 KiB

Digest Windows and Throttling

Module

Notifier

Status

IMPLEMENTED

Description

Digest generation for coalescing notifications within configurable time windows.

Implementation Details

  • INotifyThrottler interface: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Correlation/NotifyThrottler.cs -- RecordEventAsync, CheckAsync (with configurable window/maxEvents), ClearAsync for per-key throttle management
  • InMemoryNotifyThrottler: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Correlation/NotifyThrottler.cs -- in-memory sliding window throttler with ConcurrentDictionary<string, ThrottleState>, ThrottlerOptions for default window/max
  • IThrottleConfigService: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Correlation/IThrottleConfigService.cs -- per-tenant throttle configuration
  • ThrottleConfigService: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Correlation/ThrottleConfigService.cs -- resolves throttle windows per event kind
  • ThrottleConfigurationService: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Correlation/ThrottleConfigurationService.cs -- advanced throttle configuration management
  • QuietHoursServiceExtensions: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Correlation/QuietHoursServiceExtensions.cs -- quiet hours integration with throttling
  • ThrottleEndpoints: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.WebService/Endpoints/ThrottleEndpoints.cs -- REST API for throttle configuration
  • QuietHoursContracts: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.WebService/Contracts/QuietHoursContracts.cs -- quiet hours request/response models
  • IOperatorOverrideService: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Correlation/IOperatorOverrideService.cs -- operator override for throttle bypass
  • OperatorOverrideService: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Correlation/OperatorOverrideService.cs -- operator override implementation
  • OperatorOverrideEndpoints: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.WebService/Endpoints/OperatorOverrideEndpoints.cs -- REST API for operator overrides
  • Tests: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Tests/Correlation/NotifyThrottlerTests.cs, ThrottleConfigServiceTests.cs, ThrottleConfigurationServiceTests.cs
  • Source: Feature matrix scan

E2E Test Plan

  • Verify sliding window throttling suppresses notifications exceeding maxEvents within window
  • Test per-tenant throttle configuration via ThrottleEndpoints API
  • Verify quiet hours suppress notifications during configured periods
  • Test operator override allows bypassing throttle for specific keys
  • Verify throttle state clears after incident resolution
  • Test throttle configuration persists across service restarts