docs: аудит lifecycle от Соннета — 2 крит. бага (HasError guard, not_created)
This commit is contained in:
@@ -279,3 +279,43 @@ type PostgresClusterConfigurationModel struct {
|
|||||||
|
|
||||||
Подполя имеют `value_list` (например `replicas: [1,3,5,7]`, `version: ["17","16"]`).
|
Подполя имеют `value_list` (например `replicas: [1,3,5,7]`, `version: ["17","16"]`).
|
||||||
Генерация enum-валидаторов — на этом этапе не делать. Оставить на будущее.
|
Генерация enum-валидаторов — на этом этапе не делать. Оставить на будущее.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Блок 5. Аудит lifecycle-логики (Соннет, 2026-07-16)
|
||||||
|
|
||||||
|
**Вывод: база корректна, но есть 2 критичных бага.**
|
||||||
|
|
||||||
|
### 5.1 — ПРОБЛЕМА A: нет HasError()-guard в Create (КРИТИЧНО)
|
||||||
|
|
||||||
|
**Где:** `instance.go`, функция Create, строка ~260.
|
||||||
|
|
||||||
|
После вызова `resp.Diagnostics.Append(resources_core.CreateExistingResourceDiagnosticsWithDomainAndServices(...))`
|
||||||
|
код сразу идёт к `CreateResourceWithTimeout` **без проверки `HasError()`**.
|
||||||
|
|
||||||
|
При hard-error (running без adopt, suspend без adopt, not created) побочный API-вызов
|
||||||
|
всё равно выполнится — сайд-эффект уже случился.
|
||||||
|
|
||||||
|
**Как должно быть:** после append диагностик — `if resp.Diagnostics.HasError() { return }`.
|
||||||
|
|
||||||
|
### 5.2 — ПРОБЛЕМА B: not created → auto-delete+create (КРИТИЧНО)
|
||||||
|
|
||||||
|
**Где:** `resources_core/crud.go`, `adoptExistingInstanceOnCreate`.
|
||||||
|
|
||||||
|
Философия (раздел 8): `not created → hard error «проверьте ресурс в ЛК», без auto-create`.
|
||||||
|
|
||||||
|
Но `adoptExistingInstanceOnCreate` при статусе `StateNotCreated` **авто-удаляет orphan и создаёт заново**.
|
||||||
|
В сочетании с Проблемой A этот destructive сайд-эффект может выполниться несмотря на ошибку в диагностиках.
|
||||||
|
|
||||||
|
**Как должно быть:** либо убрать ветку (следовать философии), либо развести `not created` и `orphaned`.
|
||||||
|
|
||||||
|
### 5.3 — Комментарий «returns warnings» (минор)
|
||||||
|
|
||||||
|
`CreateExistingResourceDiagnostics` комментирует «returns warnings», но делает `AddError`.
|
||||||
|
Это корень путаницы с отсутствующим guard. Исправить комментарий.
|
||||||
|
|
||||||
|
### Рекомендация Соннета:
|
||||||
|
|
||||||
|
**Сначала закрыть A и B, потом продолжать SubParams.**
|
||||||
|
Строить вложенные параметры поверх Create, который выполняет сайд-эффекты
|
||||||
|
вопреки собственным диагностикам — рискованно.
|
||||||
|
|||||||
Reference in New Issue
Block a user