diff --git a/docs/sonnet-consult-2026-07-09.md b/docs/sonnet-consult-2026-07-09.md new file mode 100644 index 0000000..c12666b --- /dev/null +++ b/docs/sonnet-consult-2026-07-09.md @@ -0,0 +1,33 @@ +# Консультация с Соннетом: инцидент 2026-07-08 (продолжение) + +## Вопрос 1: Может ли PG быть повреждён после OOM при нормальных метриках? + +Да, может. Сценарий: +- OOM при активной записи → WAL-запись оборвана на середине +- PG поднялся, прошёл recovery по WAL, считает себя здоровым +- Grafana показывает метрики процесса PG — они нормальные +- Но на уровне отдельных relation-файлов могут быть битые страницы, которые проявляются только при обращении к конкретной таблице/индексу + +EPERM при `connect()` — это не PG-уровневая ошибка, это OS/сеть. PG повреждение дало бы `ECONNRESET`, `53300` (too many connections), или ошибку внутри сессии. Если EPERM именно на `connect()` — смотри в сторону сети/платформы, не PG internals. + +## Вопрос 2: Достаточно ли разницы PG для объяснения? + +Нет. EPERM на `connect()` — это не симптом повреждённого PG. Повреждённый PG дал бы: +- `FATAL: could not open file` +- `ERROR: invalid page in block` +- Или просто отклонял бы соединения с ошибкой pg-level + +EPERM — это ядро Linux отказывает в системном вызове `connect()`. PG здесь ни при чём. Ищи причину на стороне Node.js процесса или платформы. + +## Вопрос 3: Мог ли managed-сервис перегенерировать credentials при recovery? + +Да, это распространённая практика у managed PG — при `recovery` (особенно из backup/snapshot) могут: +- Сброситься пароли к дефолтным +- Создаться новый пользователь вместо старого +- Измениться SSL CA-сертификат + +Как проверить без прямого доступа — через `/v2/db-status` (уже есть в коде) + +## Ключевой вывод + +EPERM на connect() — проблема сети/платформы, не PG и не нашего кода.