diff --git a/HANDOFF-NEW-CHAT.md b/HANDOFF-NEW-CHAT.md new file mode 100644 index 0000000..46e4fbc --- /dev/null +++ b/HANDOFF-NEW-CHAT.md @@ -0,0 +1,91 @@ +# HANDOFF для нового чата — shared-sqs (состояние на 2026-08-16) + +> Этот файл — резюме длинной сессии 13–16.08.2026. Новый чат: прочитать +> этот файл + HISTORY/2026-08-14-session-log.md + doc/thinking/. + +## 1. Что за проект + +`shared-sqs` — SQS-совместимая очередь (AWS API), Go 1.23, multi-tenant, +форк GoAWS. Живёт на платформе Nubes (managed Kubernetes, realm iot-naeel). +Локально: `/home/naeel/nubes/SQS-service`, зеркало на ВМ: +`naeel@5.172.178.213:~/terra/SQS-service` (ssh-ключ `~/.ssh/naeel_vm_id_ed25519`). + +**⛔ ГРАНИЦЫ ПРОЕКТА (записано в память):** работать ТОЛЬКО с локальной папкой +и её зеркалом на ВМ. Никуда больше без прямого указания пути. + +## 2. Статус сервиса + +- Прод-версия **v0.1.35** задеплоена по digest (Docker Hub `naeel/shared-sqs`). +- Все тесты зелёные: api_test 22/22, sdk_test 15/15, fifo_dlq_probe PASS. +- План Соннета выполнен: P0.1, P0.2, P1.4, P2.5, P2.6, P3.7, P3.8 — все PASS. +- Нагрузка 168 591 операция — 0 сервисных ошибок. +- Память стабильна 2ч (VmRSS 16588→15648 kB, Threads 13). + +## 3. Главная открытая проблема — ПЛАТФОРМА, не код + +1. **Таймауты каждые 31–33с** на внешнем пути (интернет→шлюз Nubes): ~5.5% + запросов не получают ответ 30с. Доказано серверным tcpdump (8 «дыр» по + 29.5с: запросы не доходят до пода), nginx чист (max 68мс, 499=0), cilium + 0 дропов, port-forward 24977 раундов 0 сбоев. Таймер — на ВНЕШНЕМ шлюзе, + вне кластера. +2. **MSS=1448** анонсируется шлюзом при underlay MTU 1450 → большие тела + (>~1400 байт) виснут ~51с (PMTUD сломан). +3. Готов тикет: `doc/thinking/nubes-ticket.md` — ОТПРАВИТЬ в поддержку Nubes. + +## 4. Что мы починили в кластере (16.08, по команде пользователя) + +- kube-vip: `rollout restart ds shturval-vip` — ушли ошибки leaderelection в + удалённый namespace `0a42bef3-...` (хвост июльского сервиса пользователя). +- provider LB: добавлен `cidr-global: 185.247.187.151/32` в ConfigMap + `kubevip` в **kube-system** (provider читает именно оттуда, + env KUBEVIP_NAMESPACE=kube-system). «Ensured load balancer» — OK. +- После починки таймауты НЕ ушли (тест: 19 сбоев, период 31.3–33.5с) — + подтверждение, что таймер на внешнем шлюзе. + +## 5. Сравнение с Yandex YMQ (очередь `newsqs`) + +- Наш p50: 6–8мс (с ВМ) / 89–90мс (с локали). YMQ: 60–62мс / 138–150мс. +- YMQ стабилен (1 ошибка на 959), у нас — таймауты платформы (см. п.3). +- YMQ-доступ восстановлен: SA `newsqs` (роль ymq.admin), креды в + `secrets/yandex_ymq_newsqs.txt` (имена переменных AWS_ACCESS_KEY_ID/ + AWS_SECRET_ACCESS_KEY). Очередь: URL в HISTORY. +- Повторный бенчмарк — ПОСЛЕ фикса шлюза Nubes. + +## 6. Ключевые доступы + +- Креды shared-SQS (тенант t-fec713a719ad0b33): + AK `SSAK-fec713a719ad0b33c91fa54a`, + SK `e898ed410a20ff166f51a52ba39a2954fb87e2da200b1648c3975772bfe9e2b4`. +- Внешний endpoint: `https://sqs.containerk8s.dev.nubes.ru` (регион us-east-1). +- Внутренний (из подов кластера): сервис `containerk8s` в ns + `f1ffb134-7d16-45bd-8bef-69f6ec8ab33c`, порт 4100. +- Gitea: `gitea.services.ngcloud.ru/Nail/SQS-service` (токен — в secrets/gitea.txt). +- kubeconfig на ВМ протухает ~раз в сутки (~26ч) — обновлять через консоль + Nubes (пользователь копирует в буфер, на ВМ: `xclip -selection clipboard -o + > ~/.kube/config`). +- ⚠️ boto3/aws CLI: ВСЕГДА передавать креды явно (env терминала копит чужие + AWS_ACCESS_KEY_ID — был ложный 403 с кредами Яндекса). + +## 7. Хвосты / TODO + +1. Отправить тикет Nubes (файл готов). +2. Удалить дубликат `secrets/yandex_ymq_fork8s.txt` (одинаков с newsqs.txt) — + ждёт команды пользователя. +3. После фикса шлюза: повторный 30-мин бенчмарк vs YMQ, обновить + BENCHMARK-COMPARISON. +4. Эхо-сервис (Фаза 3 планов) не понадобился — доказательств хватило. + +## 8. Тестовая инфраструктура (tests/) + +- `run_full_regression.sh` — полная регрессия (api_test + sdk_test + fifo_dlq). +- `long_compare_local.py` — 30-мин сравнение с YMQ с таймстемпами. +- `compare_ymq_vs_shared.py` — короткое сравнение. +- `tcp_mtu_probe.py` — бинарный поиск MTU-порога (порт 443! 32391 снаружи закрыт). +- Планы 4 агентов: doc/thinking/nubes-network-bug-plan*.md. + +## 9. Правила пользователя (обязательные) + +- Без «делай» — ничего не менять, только отвечать/смотреть. +- Каждый шаг и результат — в HISTORY сразу; коммит после правок. +- Команды только с таймаутами. Никаких оценок — считать/мерить. +- Часовой пояс GMT+03. sed запрещён (только редакторы файлов).