Ошибки, лимиты и рекомендации интегратору
StableФормат ошибок Control Plane, trial/PAYG, активный L1/L2 autoscale‑контракт и практические правила интеграции.
Обновлено: 21 марта 2026 г.
Control Plane старается возвращать предсказуемые и автоматизируемые ответы. Для интегратора это означает, что API можно спокойно использовать в CI/CD, provisioning‑скриптах и внутренних сервисах — если соблюдать несколько правил.
Формат ошибок
Публичные пользовательские ошибки возвращаются в JSON‑виде:
{
"error": "...",
"message": "...",
"details": { ... }
}
Что обычно означают статус‑коды:
400 BadRequest— неверный payload, отсутствует обязательное поле, имя не прошло валидацию;401 Unauthorized— токен отсутствует, неверен или просрочен;403 Forbidden— scope или permissions токена не позволяют выполнить операцию;404 NotFound— ресурс не найден либо скрыт фильтрами доступа;409 Conflict/LimitExceeded— конфликт состояния, ресурс уже существует или достигнут hard‑limit;5xx— внутренняя ошибка платформы либо ошибка при взаимодействии с внутренними сервисами.
Отдельно полезно помнить про OperationDisabled: именно так Control Plane отвечает на ручные start/stop/scale и на поля start_immediately / initial_scale, которые в текущем пользовательском сценарии отключены.
Trial и PAYG
Для trial‑логики действуют hard limits:
- до
1tenant; - до
2баз; - до
10 CU·hcompute; - до
5 GiBegress.
На стороне продукта уже существует plan id standard_payg, а размерная модель готова к линейке L1–L5.
Что важно про размерный контракт
Для интегратора нужно честно разделять:
- пользовательскую размерную модель L1–L5;
- текущий активный autoscale runtime‑контракт L1/L2.
Это значит:
- приложение и UI уже могут оперировать полной размерной линейкой;
- в текущем живом writer handoff критично правильно поддерживается диапазон
L1 <-> L2.
Что важно про describe API
Для БД теперь полезно читать не только state, но и новые поля:
current_profiletarget_profilecandidate_profilescale_statefreeze_new_checkoutsscale_failure_reason
Для интеграции это важно, потому что:
- можно отличить обычный cold start от profile handoff;
- можно увидеть controlled freeze/drain;
- можно корректно диагностировать failed cutover.
Правила для интегратора
-
Считайте
createиdeleteасинхронными операциями.
Сразу после запроса ресурс может быть ещё не в финальном состоянии. -
Не стройте automation вокруг ручного lifecycle.
В текущем managed‑сценарии правильный путь — auto‑start при подключении и auto‑stop по idle. -
Сохраняйте tenant credentials и
dsn_templateсразу.
Это базовые данные для подключения любого приложения. -
Учитывайте scope и permissions токена.
Большинство неожиданных403связано именно с этим. -
Не привязывайтесь к
worker_id,candidate_worker_idиbackend_addrкак к бизнес‑идентификаторам.
Это runtime‑поля, а не стабильный продуктовый контракт. -
Ожидайте, что первое подключение к stopped‑базе дольше warm‑path.
Это нормальная цена serverless‑модели. -
Если вы используете describe/list для операционной логики, учитывайте
scale_state.
Иначе automation может ошибочно считать controlled handoff аварией.
Итог простой: лучший интеграционный сценарий в SPG99 — работать с сущностями account / tenant / database и позволять платформе автоматически делать orchestration, включая новый writer autoscaler.
