Add 80% limit warning, stop repeat notifications, fix review findings
Notifications: - Warn once when a counter reaches warn_percent of its limit, through separate warn_*_url endpoints. - Write ntf/ markers so a lost Redis reply cannot re-send a breach. - Retry only when the request never left or the web app answered 429/5xx. Fixes: - Retry transactions Redis rejected; treat pool timeouts as definite. - Install the signal handler before startup work. - Stop logging the login suffix; redact notify URL credentials. - Reject corrupt or empty CDBs, truncated hash tables included. - Require a Sentinel password, refuse example placeholders, and default admin_addr to localhost. - Normalise /counters domains, count on the arrival day, log rejections, hide internals in errors and exit 1 on a failed drain. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
c43ff17627
commit
54f9626121
@@ -67,5 +67,19 @@ Requirements and notes:
|
||||
| 8 | `internal/server` `TestMalformedRowCountsOtherSide`; `internal/counting` `TestPlan_MalformedRowIsNotHosted`; `internal/domains` `TestLookup_MalformedRow`; `internal/txlog` `TestTrail_MalformedRow` |
|
||||
| 6 | `internal/config` `TestValidate_Errors` (auth_token / unknown keys), `TestLoad_TokenFromEnvOnly`, `TestLoad_Defaults` (`:5555`); `cmd/migadu_counters` `TestRun_FlagsAndExitCodes` |
|
||||
|
||||
## Fixed in round 2 (2026-11-09) — regression tests now in the suite
|
||||
|
||||
| Merged # | Regression test |
|
||||
|---|---|
|
||||
| 9 | `internal/notify` `TestNotify_TimeoutAfterWriteIsNotRetried`, `TestNotify_BackoffReleasesSlot`, `TestNotify_ShutdownFinishesPendingRetries`, `TestNotify_ShutdownDeadlineReportsRealAttempts` |
|
||||
| 10 | `cmd/migadu_counters` `TestRun_SIGHUPDuringStartupIsQueued` |
|
||||
| 11 | `internal/server` `TestReject_LeavesTraceInBothLogs` |
|
||||
| 12 | `internal/domains` `TestParseLimits_OverrideKeysLowercased` |
|
||||
| 13 | `internal/txlog` `TestNotificationLines_RedactCredentials`; `internal/config` `TestWarnings_PlainHTTPWithBasicAuth` |
|
||||
| 14 | `internal/server` `TestErrors_DoNotExposeInternals`; `internal/config` `TestLoad_Defaults` |
|
||||
| 15 | `internal/config` `TestValidate_Errors` (case "sentinel needs password"), `TestLoad_SentinelPasswordOptional` |
|
||||
| 16 | `cmd/counterctl` `TestDateWarning_Boundary` |
|
||||
| 17 | `internal/server` `TestPanic_CountedInRequestMetrics` |
|
||||
|
||||
The proof files stay here as the review record; they no longer compile against the current API
|
||||
(`CountResponse`, `store.Incr`) and are not meant to.
|
||||
|
||||
Reference in New Issue
Block a user