fix(tradein/sql): миграция 274 без lock_timeout роняла гейт #2752
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 4m55s
CI / changes (pull_request) Successful in 11s
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Successful in 1m5s
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 4m55s
CI / changes (pull_request) Successful in 11s
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Successful in 1m5s
CREATE INDEX без lock_timeout встаёт в очередь за чужой долгой сессией и уводит за собой запросы приложения. Таблица новая и пустая, но очередь блокировок этого не знает, а гейт check-migration-lock-timeout.py держит правило на каждом PR — и правильно делает. Заодно поправлена шапка миграции: там осталась моя опровергнутая версия, будто ценность в mainPhone и одиннадцати номерах. mainPhone лежит в паспортном блоке рядом с login/passportHost/passportPhones — это номер НАШЕЙ учётки, а не продавца, и собирать его нельзя. Настоящее различие между режимами — author.phoneNumbers (0 без кук, 2 с куками, одинаково на обеих карточках); encryptedPhones в обоих режимах одинаков. Refs #3192
This commit is contained in:
parent
bb59caa90c
commit
4c3a767f45
1 changed files with 17 additions and 4 deletions
|
|
@ -1,9 +1,16 @@
|
||||||
-- 274_yandex_session_cookies.sql
|
-- 274_yandex_session_cookies.sql
|
||||||
-- Purpose: Encrypted storage for Yandex.Nedvizhimost browser session cookies.
|
-- Purpose: Encrypted storage for Yandex.Nedvizhimost browser session cookies.
|
||||||
-- Замер на проде (сайдкар, две карточки, вперемежку с/без кук, 2026-08-28):
|
-- Замер на проде (сайдкар, две карточки, вперемежку с/без кук, 2026-08-28):
|
||||||
-- авторизованная сессия отдаёт mainPhone=1 и на 11 больше уникальных
|
-- author.phoneNumbers присутствует ТОЛЬКО в авторизованном режиме
|
||||||
-- телефонов продавца (90→101 / 89→100) по сравнению с анонимным запросом —
|
-- (0 без кук → 2 с куками, одинаково на обеих карточках), плюс три
|
||||||
-- то есть контакты продавца физически недоступны без валидной сессии.
|
-- номера в author.phones сверху. Это контакт продавца с тегом канала
|
||||||
|
-- и redirectId.
|
||||||
|
-- NB: mainPhone НЕ собирать — он лежит в паспортном блоке рядом с
|
||||||
|
-- login/passportHost/passportPhones, то есть это номер НАШЕЙ учётки,
|
||||||
|
-- а не продавца. Первая версия этого замера приняла его за данные
|
||||||
|
-- объявления; счётчики по конкретным полям это опровергли.
|
||||||
|
-- encryptedPhones одинаков в обоих режимах (54) — зашифрованные токены
|
||||||
|
-- отдаются всегда, различие не в них.
|
||||||
-- Uses pgcrypto pgp_sym_encrypt for AES encryption at rest (зеркалит
|
-- Uses pgcrypto pgp_sym_encrypt for AES encryption at rest (зеркалит
|
||||||
-- 027_cian_session_cookies.sql / 174_domclick_session_cookies.sql).
|
-- 027_cian_session_cookies.sql / 174_domclick_session_cookies.sql).
|
||||||
-- Dependencies:
|
-- Dependencies:
|
||||||
|
|
@ -20,10 +27,16 @@
|
||||||
-- числового id аккаунта, доступного из cookie-дампа; используем произвольную
|
-- числового id аккаунта, доступного из cookie-дампа; используем произвольную
|
||||||
-- текстовую метку аккаунта, которую задаёт оператор при заливке дампа.
|
-- текстовую метку аккаунта, которую задаёт оператор при заливке дампа.
|
||||||
--
|
--
|
||||||
-- Sources: issue #3192 (Yandex session cookies — mainPhone/contact reveal)
|
-- Sources: issue #3192 (Yandex session cookies — author.phoneNumbers reveal)
|
||||||
|
|
||||||
BEGIN;
|
BEGIN;
|
||||||
|
|
||||||
|
-- #2752: без lock_timeout CREATE INDEX встанет в очередь за чужой долгой
|
||||||
|
-- сессией и уведёт за собой запросы приложения — таблица новая и пустая, но
|
||||||
|
-- очередь блокировок этого не знает. Гейт check-migration-lock-timeout.py
|
||||||
|
-- держит правило на каждом PR.
|
||||||
|
SET LOCAL lock_timeout = '5s';
|
||||||
|
|
||||||
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS yandex_session_cookies (
|
CREATE TABLE IF NOT EXISTS yandex_session_cookies (
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue