10 lines
1.5 KiB
Markdown
10 lines
1.5 KiB
Markdown
# Итог: гонки при изменении администраторов и регистр логина (изменение 021)
|
|||
|
|
|
||
|
|
## Что сделано
|
||
|
|
- `app/api/v1/users.py`: `pg_advisory_xact_lock(703002)` до чтения пользователя и подсчёта администраторов — в `update_user` (если меняются роль или доступ) и в `delete_user`: проверка «последний администратор» и изменение выполняются под блокировкой.
|
||
|
|
- Миграция `0008`: уникальный индекс `lower(username)` (перед созданием проверка дублей с остановкой и перечнем); `app/models.py`: `Index("uq_users_lower_username", …)`.
|
||
|
|
- `README.md`: раздел «Пользователи и роли».
|
||
|
|
|
||
|
|
## Проверка
|
||
|
|
Проверка: стенд `ipam_control_006` пересобран, миграции применены до 0008 (`alembic check` — расхождений нет); ручная проверка (скрипт во временной папке, в репозиторий не добавлялся); автотесты по условию этапа не писались. Логин `SMOKE-U` при существующем `smoke-u` → 409; миграция на стенде прошла.
|
||
|
|
Не проверено: параллельное отключение двух администраторов.
|