docs(review): Opus code-review report verbatim + critical analysis (confirmed 🔴1/🔴5/🔴8, open JWT and byte-limit decisions)
This commit is contained in:
@@ -152,6 +152,26 @@
|
||||
- Док (коммит `865db49`): почему C, механика, замеры, ограничения, пошаговое включение, откат,
|
||||
путь к варианту A (5 шагов) и триггеры перехода.
|
||||
|
||||
### 2.17. Код-ревью Opus + критический разбор
|
||||
- Дал промпт Opus: полное код-ревью + советы по архитектуре. Дословный ответ:
|
||||
`doc/thinking/opus-report-2026-10-10.md`; критический разбор + что подтверждено:
|
||||
`doc/thinking/opus-report-analysis-2026-10-10.md`.
|
||||
- Opus указал ~50 пунктов (🔴/🟡/🟢). Моя оценка: силён по конкуренции/durability, но смешивает
|
||||
баги / осознанный дизайн / отклонения от семантики AWS; часть 🔴 надо понизить.
|
||||
- **Подтверждено по коду (чинится без владельца):**
|
||||
- 🔴1 фатал `concurrent map iteration and map write`: `create_queue.go:84` зовёт `SaveQueue`
|
||||
под `SyncQueues.Lock` без `queue.mu`; `SaveQueue`→`json.Marshal` итерирует `Duplicates`/`FIFO*`/`Tags`,
|
||||
а мутаторы держат только `queue.mu`. Условие: идемпотентный CreateQueue существующей FIFO-очереди + SendMessage.
|
||||
- 🔴5 неполный откат dedup при сбое `SaveMessageSync` (`send_message.go:151-160`) → ретрай 200 без сохранения.
|
||||
- 🔴8 пустой `ReceiptHandle` в DeleteMessageBatch удаляет все невыданные сообщения — **только
|
||||
через JSON-протокол** (`x-amz-json-1.0`); Query-форма защищена (`requests.go:568` не на этом пути).
|
||||
- Порядок локов + I/O под глобальным локом; fail-fast на старте без Redis отсутствует.
|
||||
- **Нужны решения владельца:**
|
||||
- JWT: проверяет ли шлюз подпись (trusted-perimeter из `jwt.go:7-11`)? Независимо чинятся:
|
||||
три шлюза prod/test/dev → prod; потолок grace в `cache.go:68-75`; идентичность по `sub`, не email.
|
||||
- Лимит по байтам (OOM, 🔴14): нужны RAM ВМ + число тенантов → cap на тенанта/очередь + глобальный предохранитель по RSS.
|
||||
- Порядок исправления — §5 дока анализа.
|
||||
|
||||
## 3. Грабли (для повторного использования)
|
||||
|
||||
1. **`proxy_set_header Host $host` теряет порт** → SigV4 `SignatureDoesNotMatch`.
|
||||
@@ -216,3 +236,9 @@ pkill -x shared-sqs
|
||||
вторая ВМ, LB с проверкой `/ready`. Пока всё это не готово — флаг выключен.
|
||||
5. Дальше по мануалу: обновить устаревший `MANUAL-NEXT-2026-10-08.md` (ещё говорит «Шаг 1 — проверить
|
||||
гипотезу» и «вопрос по домену открыт»); решить вопрос push в origin (18 коммитов впереди).
|
||||
6. **JWT (решение владельца):** проверяет ли шлюз подпись и отдаёт 200 только для валидных токенов?
|
||||
От этого — 🔴 или «доверяем шлюзу». См. `opus-report-analysis-2026-10-10.md` §3.
|
||||
7. **Лимит по байтам (решение владельца):** нужны RAM ВМ 213 и целевое число тенантов для цифр cap.
|
||||
См. `opus-report-analysis-2026-10-10.md` §4.
|
||||
8. Подтверждённый критический набор к исправлению (🔴1/🔴5/🔴8 + lock order + fail-fast) —
|
||||
ожидает команды на правку.
|
||||
|
||||
Reference in New Issue
Block a user