36 lines
1.1 KiB
Markdown
36 lines
1.1 KiB
Markdown
---
|
|
status: done
|
|
---
|
|
|
|
# Task 02: Aggregate ring-buffer overflow warnings
|
|
|
|
## Objective
|
|
|
|
Prevent sustained event-buffer pressure from producing one warning per dropped
|
|
event while retaining enough information to diagnose the pressure.
|
|
|
|
## Scope
|
|
|
|
- `apps/backend/internal/plugins/delivery/deliverer.go`
|
|
- Related delivery tests and logger observers.
|
|
|
|
## Requirements
|
|
|
|
- Keep the ring-buffer size, TTL, oldest-drop policy, and delivery order intact.
|
|
- Rate-limit overflow warnings independently per plugin to one per 60 seconds.
|
|
- Log the first drop immediately; aggregate suppressed drops and include
|
|
`dropped_count` in the next warning.
|
|
- Use an injectable clock so tests do not sleep.
|
|
|
|
## Test-first acceptance
|
|
|
|
- One drop emits one warning with `dropped_count=1`.
|
|
- More drops for the same plugin inside the interval emit no additional warning.
|
|
- The next drop after the interval emits one warning with the accumulated count.
|
|
- Two plugins have independent warning windows and counters.
|
|
- Existing ring-buffer recovery/TTL tests remain unchanged in behavior.
|
|
|
|
## Dependencies
|
|
|
|
None. This task may land before task 01.
|