From 5be7b6882f12fb973a482c101bb1ad4b737c080c Mon Sep 17 00:00:00 2001 From: bot-backend Date: Sat, 4 Jul 2026 02:58:03 +0500 Subject: [PATCH] =?UTF-8?q?fix(market-metrics):=20offer-trend=20=D1=82?= =?UTF-8?q?=D0=B0=D0=B9=D0=BC=D0=B0=D1=83=D1=82=20=E2=80=94=20warning=20?= =?UTF-8?q?=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20exception?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Профилирование 2026-07-04: QueryCanceled на /analyze (~2/сутки в GlitchTip) — это НЕ user-баг. Offer-trend (§4.3) — самый тяжёлый запрос analyze (211k итераций Nested Loop в objective_lots_history, ~7.4 ГБ буфер-трафика) — на холодном кэше иногда пробивает свой 8с-гвард (~3% прогонов hot-участка). Обрабатывается корректно (деградация в пустой offer_block, analyze успешен), но logger.exception при LoggingIntegration(event_level=ERROR) поднимал ложные GlitchTip-события. Ожидаемый таймаут аддитивного блока = WARNING. Корневой фикс (индекс objective_lots_history) — отдельным PR database-expert. --- backend/app/services/site_finder/market_metrics.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/backend/app/services/site_finder/market_metrics.py b/backend/app/services/site_finder/market_metrics.py index 20f32a8f..001b049b 100644 --- a/backend/app/services/site_finder/market_metrics.py +++ b/backend/app/services/site_finder/market_metrics.py @@ -875,12 +875,16 @@ def compute_offer_price_trend( } try: rows = db.execute(_OFFER_TREND_SQL, params).mappings().all() - except Exception: - logger.exception( - "market_metrics: offer-trend query failed (lat=%s lon=%s radius=%s)", + except Exception as exc: + # Ожидаемый путь: 8с-гвард (parcels.py) отменяет запрос на холодном кэше + # (~2/сутки, профилирование 2026-07-04) — блок аддитивный, analyze успешен. + # WARNING, не exception: ERROR-уровень поднимал ложные GlitchTip-события. + logger.warning( + "market_metrics: offer-trend query failed (lat=%s lon=%s radius=%s): %s", center_lat, center_lon, radius_m, + exc, ) rows = []