|
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI / changes (pull_request) Successful in 11s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 2m2s
CI / backend-tests (pull_request) Successful in 17m28s
_query_power_points и _query_water_latest делали db.execute без SAVEPOINT, тогда как четыре соседних _query_* в том же файле его имеют. Пункт эпика указывал на другое место — отсутствие db.rollback() в except-блоке _get_connection_capacity (full_report_pdf.py:217). Но плоский rollback на ОБЩЕЙ сессии запрещён: он снёс бы работу вызывающего. Чинить надо там, где сбой происходит, — как во всей волне #2464. Цепочка целиком: сбой в _query_power_points → исключение всплывает (в get_connection_capacity try/except нет) → его глотает _get_connection_capacity ради деградации §3 → транзакция остаётся aborted → падает уже СЛЕДУЮЩИЙ запрос — рыночная цена в _generate_concept_result → концепция молча уходит в class_norm-фолбэк То есть отказ проявляется не там, где случился, и выглядит как «нет рыночных данных». Ровно этот класс и описывает эпик. Третье место (SET LOCAL statement_timeout в _query_nearby_network_zones) при беглом поиске выглядит незащищённым, но лежит ВНУТРИ savepoint'а — проверено по отступам, трогать не нужно. Тест на PostgresLikeSession (tests/support/pg_session.py) — двойнике с настоящей семантикой aborted-транзакции. На MagicMock он был бы зелёным по построению. Против origin/main: следующий запрос после проглоченного сбоя → AbortedTransactionError, ×2 savepoints_entered = 0 вместо >=1 → падает, ×2 двойник сам воспроизводит отравление — контроль, зелёный с обеих сторон Последний контроль не для симметрии: без него зелёные тесты нельзя отличить от «двойник ничего не моделирует». Прогоны: tests/services/site_finder + tests/services/exporters — 868 passed rc=0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| analysis_runs | ||
| cadastre | ||
| chat | ||
| exporters | ||
| forecasting | ||
| generative | ||
| llm | ||
| scrapers | ||
| site_finder | ||
| __init__.py | ||
| test_2464a_job_settings_savepoint.py | ||
| test_2464h_timing_overlap_formula.py | ||
| test_analytics_queries_domrf_dedup.py | ||
| test_cadastre_bulk.py | ||
| test_dadata_client.py | ||
| test_ekburg_permits.py | ||
| test_forecast_request_cache.py | ||
| test_functional_zone_lookup.py | ||
| test_granddoc_lookup.py | ||
| test_ird_analyze.py | ||
| test_ird_overlay_lookup.py | ||
| test_job_settings.py | ||
| test_krt_lookup.py | ||
| test_mapping_review.py | ||
| test_newbuilding_crossload.py | ||
| test_nspd_denorm.py | ||
| test_obj_class_backfill.py | ||
| test_objective_backfill.py | ||
| test_own_developer_ids_config.py | ||
| test_planning_lookup.py | ||
| test_ppt_tep_lookup.py | ||
| test_quarter_dump_lookup.py | ||
| test_recommend_mix_velocity.py | ||
| test_reservation_lookup.py | ||
| test_utility_characteristics.py | ||
| test_weather_cache.py | ||
| test_zone_regulation_backfill.py | ||
| test_zone_regulation_extract.py | ||
| test_zone_regulation_memo.py | ||
| test_zone_regulation_write_session.py | ||