chore(tradein/db): снести DEPRECATED-колонку listings.ceiling_height #2799
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
ИРД
вторичка
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#2799
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "chore/2699-drop-ceiling-height"
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?
Summary
Хвост #2699. Миграция 238 свела высоту потолков к канону
ceiling_height_mи намеренно оставила старую колонку: «сначала прод должен подтвердить, что колонку никто не пишет и не читает. Снос — отдельным шагом». Подтверждение получено — ниже числа.251_listings_drop_ceiling_height.sql:ALTER TABLE listings DROP COLUMN IF EXISTS ceiling_heightподSET LOCAL lock_timeout = '5s'.Критерий «писателей нет» — записан ДО, выполнен
count(ceiling_height)обязан остаться 8552 (8554 из #2699 минус 2 мусорных значения cian, обнулённых шагом 1 миграции 238):Контроль, что замер не мёртвый. «Ничего не изменилось» одинаково выглядит и при остановленном скрейпинге, поэтому нужен признак живости: за 2.5 минуты между замерами канон вырос 16 133 → 16 147, а
last_seen_atстрок с непустымceiling_heightобновлялся в ту же минуту, что и замер. То есть UPDATE идут по этим самым строкам прямо сейчас и сносимую колонку не трогают — это сильнее, чем «двое суток тишины».Потребители — сверка на
origin/maingit grep -n 'ceiling_height\b' origin/main -- '*.py' '*.ts' '*.tsx' '*.sql'минусceiling_height_m: обращений к колонке не осталось. Что в выдаче и почему это не потребители:CianEnrichment.ceiling_height,YandexEnrichment.ceiling_height) — атрибуты объектов, не колонки;CAST(:ceiling_height AS numeric)вyandex/detail.py:600— имя бинд-параметра, присваивается он колонкеceiling_height_m(соседняя строка). То же вcian/detail.py(:ch) иbase.py;test_ceiling_height_unify_2699.py,test_scraper_admin_apis.py);Фронтовых (
.ts/.tsx) вхождений нет вообще.Зависимости в схеме — проверено на проде, все нули
pg_dependпо атрибутуlistings.ceiling_heightceilingв определенииlistingsсceilingвindexdefceilingceiling_heightв телеlistings(price_change, set_geom)pg_publication_relпоlistings(column list ломает DROP)listingsв gendesign-БДCASCADEне нужен и не добавлен: в этом продуктеDROP ... CASCADEуже терял гранты FDW-пользователю (инцидент C3).Потери данных нет
ceiling_heightесть, канона нет» — 0;Всё содержимое сносимой колонки присутствует в каноне до последнего знака.
Про lock_timeout
Удержание ACCESS EXCLUSIVE дёшево и не зависит от размера:
DROP COLUMNне переписывает heap, а помечаетattisdroppedв каталоге (вlistingsуже 4 таких «пенька» при 92 живых колонках). Дорого ожидание, и здесь оно дороже, чем у 250:listings— 19 GB, 97 540 строк, постоянный скрейпинг. Срабатывание таймаута = честный красный деплой через 5 с, миграция не помечается применённой, повторить в окно потише.Порядок деплоя: код УЖЕ впереди схемы (писатели сняты PR #2779 07.08 и с тех пор на проде) — для DROP это правильный порядок, обратный уронил бы скрейпинг.
Test plan
scripts/check-migration-lock-timeout.py --selftest— OK; гейт на дереве:✓ ... (проверено новых миграций: 2)SET LOCAL→::error ... блокирующий DDL без lock_timeout (ALTER TABLE listings DROP COLUMN IF EXISTS ceiling_height), exit 1pytest tests/test_migrations_manifest.py— 4 passedpostgis/postgis:16-3.4,--network none): применяется, идемпотентна при повторном прогоне (NOTICE ... skipping, exit 0), колонка снята,ceiling_height_mс данными и COMMENT на местеlistings— 0, транзакций длиннее 30 с в БД нет_schema_migrations, колонки нет вinformation_schema,count(ceiling_height_m) >= 16 153и продолжает растиRefs #2699