HISTORY: P0.1 таймауты + P0.2 рестарт PASS + найден дефект воскрешения удалённых очередей

This commit is contained in:
“Naeel”
2026-08-15 08:41:58 +04:00
parent af0325ebbe
commit 63261d1238
2 changed files with 146 additions and 0 deletions
+20
View File
@@ -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 очереди) — НЕ ИСПРАВЛЕНО, задокументировано.