HISTORY: P0.1 таймауты + P0.2 рестарт PASS + найден дефект воскрешения удалённых очередей
This commit is contained in:
@@ -771,3 +771,23 @@ MSS clamp 1448, PMTUD мёртв). Кластером (kubectl) НЕ чинит
|
||||
прокси на ВМ с MTU 1400 на ens192 (вход на ВМ чист — факт drhider; выход ВМ→кластер
|
||||
починится уменьшением MTU ВМ); 3) временным лимитом размера в сервисе.
|
||||
|
||||
## План Соннета — выполнение (15.08.2026)
|
||||
|
||||
**Backup**: ветка `backup-v0.1.35-2026-08-15` (запушена в Gitea), работа в `main`.
|
||||
|
||||
**P0.1 Серверные таймауты — СДЕЛАНО** (коммит `af0325e`, digest `sha256:4385597f…`):
|
||||
`http.Server{ReadHeaderTimeout:10s, WriteTimeout:35s, IdleTimeout:90s, MaxHeaderBytes:8192}`,
|
||||
`ReadTimeout` убран (не рвать большие/медленные тела и long-poll).
|
||||
|
||||
**P0.2 Рестарт с in-flight — СДЕЛАНО, PASS** (`tests/reboot_probe.py`):
|
||||
10 очередей × 20 сообщений + 100 сообщений (50 in-flight) → `kubectl delete pod
|
||||
--grace-period=0 --force` → после подъёма: /health ok; restore 10×20 OK;
|
||||
main: получено 100, уникальных 100, пропущено 0, дублей 0.
|
||||
|
||||
**НАЙДЕН ДЕФЕКТ (критичный)**: после деплоя таймаутов под рестартовал — и у
|
||||
тенанта «воскресли» 50 удалённых ранее очередей (лимит 50 → LimitExceeded).
|
||||
Причина: `DeleteQueue` пишет удаление в Redis АСИНХРОННО (asyncWrite); при
|
||||
SIGKILL/рестарте пода запись не успевает → очередь остаётся в Redis →
|
||||
`LoadAllQueues` восстанавливает её. Удаления должны быть синхронными
|
||||
(хотя бы DEL очереди) — НЕ ИСПРАВЛЕНО, задокументировано.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user