Files
contracts/History/sonnet-question-upload-rst-2026-07-15.md
T

71 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Вопрос для Sonnet — проблема первого upload (без ссылок на файлы)
## Ситуация
Мигрировали сервис "Сверка договоров" с ВМ на Flask (managed Python, Штурвал).
Всё работает: классификация LLM, парсинг, группы, сравнение через SSE.
НО: **первый файл при upload из браузера падает с ERR_CONNECTION_RESET**.
Та же проблема прямо сейчас на втором сервисе — drhider (Обфускация документов).
Вчера (14 июля) drhider работал, сегодня (15 июля) — оба сервиса сломаны одинаково.
## Симптомы
- **Браузер**: первый POST с файлом (~63KB) зависает на 100% прогресса, ответ не приходит
- **curl с ВМ (5.172.178.213)**: 5/5 upload успешно, ~80-100ms каждый
- **Затрагивает оба сервиса**: contractor и drhider
- **Признак**: ERR_CONNECTION_RESET в Chrome/Electron
## Что проверено (инфраструктура)
Cilium MTU: 1400
Ingress (shturval-ingress-controller, nginx):
keep-alive: 75
use-http2: false
proxy-body-size: 1024m
client-body-timeout: 60
client-header-timeout: 30
Ingress-поды: 2/2 Ready, 1/1 Running
Образ ingress: r.shturval.tech/ingress-nginx/controller:v1.12.6
Размещение подов сейчас:
Ingress: control-plane (172.16.0.73) + workers-v8zq4 (172.16.3.149)
Contractor: workers-6f74n (172.16.1.182)
Drhider: workers-6f74n (172.16.1.99)
Кластер: 4 ноды (3 worker + 1 control-plane), Cilium с Geneve-энкапсуляцией, kube-vip.
## Что проверено (код)
- В JS добавлен warmup fetch('/health') при загрузке страницы
- Flask no_cache after_request (Cache-Control: no-cache)
- app.run(threaded=True)
## Хронология
- 13 июля: Helm ingress revision 7 — drhider работал
- 15 июля 02:00 UTC: Helm upgrade → revision 8 — сбросил ingress ConfigMap на дефолты
(keep-alive: 10, body-size: 8m, client-body-timeout: 10, client-header-timeout: 10)
- 15 июля ~08:00 UTC: патч ConfigMap обратно (keep-alive: 75, etc.) + kubectl rollout restart ingress
- После патча: curl работает, браузер — нет
- Helm values ИДЕНТИЧНЫ между revision 7 (рабочей) и 8 (сломанной):
```
controller:
hostPort.enabled: true
replicaCount: 2
service.type: LoadBalancer
```
## Что ещё
- drhider проходил эту проблему 14 июля — есть документ PROBLEM-AND-SOLUTION.md
Фиксы оттуда ВСЕ применены: MTU 1400, keep-alive 75, use-http2 false, warmup, proxy-body-size 1024m
- Там же сказано: даже после всех фиксов "5× POST 63KB | 4× OK, 1× ABORTED" — 20% отказов
## Вопрос
1. Почему после Helm upgrade (revision 7→8) браузерные upload перестали работать,
если все значения ConfigMap восстановлены вручную до прежних?
2. Что ещё мог изменить Helm upgrade кроме ConfigMap?
3. Как добиться 100% надёжности первого upload из браузера?