From f10f2d39981dd525b904e84c7edf20da912b4060 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sat, 8 Aug 2026 21:55:23 +0400 Subject: [PATCH] =?UTF-8?q?doc:=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BA=D0=BE=D0=B4-=D1=80=D0=B5=D0=B2=D1=8C?= =?UTF-8?q?=D1=8E=20=D0=B4=D0=BB=D1=8F=20=D0=A1=D0=BE=D0=BD=D0=BD=D0=B5?= =?UTF-8?q?=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HISTORY/code-review-request.md | 40 ++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 HISTORY/code-review-request.md diff --git a/HISTORY/code-review-request.md b/HISTORY/code-review-request.md new file mode 100644 index 0000000..e44ced0 --- /dev/null +++ b/HISTORY/code-review-request.md @@ -0,0 +1,40 @@ +# Code Review Request — Go Terraform Registry + +## Контекст + +Terraform Provider Registry по протоколу HashiCorp. Деплоится как Docker-контейнер (containerk8s managed service в Nubes Cloud). Работает на проде: `https://go-registry.containerk8s.dev.nubes.ru`. + +Хранилище — S3 (MinIO). Провайдеры, SHA256SUMS, GPG-подписи, документация — всё в S3. + +## Файлы для ревью + +- `server/main.go` — HTTP-сервер, S3, все роуты +- `server/gpg_key.go` — GPG-ключи (2 штуки, вшиты в код) +- `server/docs.go` — статика документации из S3 +- `Dockerfile` — multi-stage сборка + +## Вопросы + +1. **`downloadVersion`: `defer` внутри `if err == nil`** — defer в Go выполняется при выходе из функции, а не из блока. Правильно ли это здесь? Не приведёт ли к накоплению defer'ов или утечке? + +2. **`readyzHandler`**: комментарий «Проверить доступность S3», но возвращает просто "ok". Стоит ли добавить реальную проверку (head bucket)? + +3. **`listVersions`**: версии не сортируются, порядок зависит от S3 ListObjects. Стоит ли сортировать? + +4. **`proxHandler`**: никаких ограничений на размер файла, таймаутов, rate-limiting. Нормально ли для внутреннего сервиса? + +5. **`rootHandler`**: HTML захардкожен. Вынести в template или embed? + +6. **Graceful shutdown**: нет обработки SIGTERM. Для managed-сервиса это критично? + +7. **`tyCandidateKeys` в docs.go**: индентация сломана (табы/пробелы вперемешку). Это баг форматирования или Go это нормально компилирует? + +8. **GPG-ключи в коде**: стоит ли вынести в файлы/ENV или оставить как есть? + +9. **Dockerfile**: `go mod init` + `go mod tidy` при каждой сборке. Стоит ли добавить `go.sum` в репо для воспроизводимости? + +10. **Общая архитектура**: что можно улучшить? Есть ли проблемы с безопасностью? + +## Как отвечать + +Если что-то неясно — спрашивай. Контекст: сервис внутренний, не публичный, трафик низкий.