fix(aliases,consolidations): блокировка удаления алиаса, границы входов (T11.3, M-4, M-6) #26
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "fix/21-aliases-bounds"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Refs #21 (issue остаётся открытой). Закрывает маркеры T11.3, M-4, M-6; остальные пункты #21 не затронуты.
Что сделано
AliasService.removeберётlock_alias_key(normalized_alias)(та же advisory-блокировка, что вaddи ручном сопоставлении, design #66), затем перечитывает алиас (get_alias(..., refresh=True),populate_existing): если перенос (move_alias) уже удалил алиас — 404, фантомного событияLEGAL_ENTITY_CHANGEоб удалении нет (раньше вторая сторона писала событие и DELETE по 0 строк с SAWarning).test_manual_mapping_waits_for_alias_advisory_lock: соседняя транзакция держитlock_alias_key, ручное сопоставление встаёт в ожидание и после commit завершается 200.MembersIn.legal_entity_ids≤ 500,StatusIn.comment≤ 1000,OsvFilters.q≤ 500 (MAX_MEMBERS,MAX_STATUS_COMMENT,MAX_OSV_QUERY; 422 в формате приложенияdetail[].loc/msg);lock_visible_version: видимость (без блокировки) ->FOR UPDATE; тестtest_foreign_version_is_hidden_without_waiting_for_row_lock.consolidations-api: требование «Границы входных данных» (2 сценария). README: «Гонки уникальных ограничений» дополнено удалением алиаса.Как проверить
Результаты:
make check— 1108 passed (684 deselected);pytest -m "integration and not e2e"— 683 passed, 1109 deselected (4:25). Тест T11.3 и тест видимости доFOR UPDATEбыли красными до исправления (TimeoutError / 204 вместо 404).Находки
aliases.removeбез блокировки: фантомное событие при гонке сmove_alias74be7d374be7d3MembersIn/StatusIn/OsvFilters.q;lock_visible_versionблокировал до проверки видимости5868b14qвadmin.py(UsersFilters),directories.py(фильтры ЮЛ/ГК) тоже безmax_length— вне пунктов #21Decisions made without discussion
NAME_MAX_LENGTH,MAX_TAKEOVER_REASON); 500 ЮЛ в периметре — на порядок выше реальных ГК. Ошибка стоит ложного 422 на экстремальной группе; константа одна.lock_visible_versionпослеFOR UPDATEповторная проверка видимости не делается (ГК и филиал версия не меняет), только проверка существования строки.get_aliasполучил необязательныйrefreshвместо отдельной функции.Что проверить человеку
Приемлемость значений границ (особенно 500 ЮЛ); нужны ли такие же границы для
qсправочников (C21-1).🤖 Generated with Claude Code