Files
git.stella-ops.org/docs/features/checked/notifier/digest-windows-and-throttling.md
2026-02-12 10:27:23 +02:00

4.0 KiB

Digest Windows and Throttling

Module

Notifier

Status

VERIFIED

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, src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Tests/Endpoints/SuppressionEndpointsTests.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

Verification

  • Verified on 2026-02-11 with run-002.
  • Tier 0 source checks passed for throttler, throttle configuration, quiet-hours, and operator override services/endpoints.
  • Tier 1 passed after fixing missing DI registrations that made /api/v2/throttles, /api/v2/quiet-hours, and /api/v2/overrides unusable at runtime; focused suppression suite passed (53/53) and full Notifier suite passed (513/513).
  • Tier 2 API behavior checks passed for positive and negative user flows across throttle config round-trip, delete fallback, quiet-hours evaluation, override bypass checks, and throttle clear lifecycle behavior.
  • Note: throttle/quiet-hours configuration is currently in-memory and not guaranteed to persist across process restarts.
  • Evidence:
    • docs/qa/feature-checks/runs/notifier/digest-windows-and-throttling/run-002/tier0-source-check.json
    • docs/qa/feature-checks/runs/notifier/digest-windows-and-throttling/run-002/tier1-build-check.json
    • docs/qa/feature-checks/runs/notifier/digest-windows-and-throttling/run-002/tier2-api-check.json