Fix public snapshot runner initialize storage argument
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
---
|
||||
id: TASK-245
|
||||
title: Fix public snapshot runner initialize storage argument
|
||||
status: done
|
||||
type: backend
|
||||
team: Backend Senior
|
||||
supporting_teams:
|
||||
- Arquitecto Python
|
||||
roadmap_item: foundation
|
||||
priority: high
|
||||
---
|
||||
|
||||
# TASK-245 - Fix public snapshot runner initialize storage argument
|
||||
|
||||
## Goal
|
||||
|
||||
Fix the deployed manual public jobs that failed with `initialize_rcon_materialized_storage() got an unexpected keyword argument 'ensure_storage'`.
|
||||
|
||||
## Context
|
||||
|
||||
TASK-243 added `ensure_storage` gating in the ranking and historical snapshot paths, but one wrapper incorrectly propagated that keyword into `initialize_rcon_materialized_storage()`, whose signature only accepts `db_path`.
|
||||
|
||||
The failure was visible when running:
|
||||
|
||||
- `python -m app.historical_runner --public-job ranking-weekly`
|
||||
- `python -m app.historical_runner --public-job ranking-monthly`
|
||||
- `python -m app.historical_runner --public-job historical-weekly`
|
||||
- `python -m app.historical_runner --public-job historical-monthly`
|
||||
|
||||
## Steps
|
||||
|
||||
1. Audited every `ensure_storage=` path around public snapshot generation.
|
||||
2. Confirmed that `initialize_rcon_materialized_storage()` does not accept that keyword.
|
||||
3. Moved the gating logic to a local path resolver in `rcon_historical_leaderboards`.
|
||||
4. Kept `connect_postgres_compat(initialize=False)` for follow-up read/write connections after the one-time initialization point.
|
||||
5. Added regression tests for both enabled and disabled initialization flows.
|
||||
|
||||
## Files to Read First
|
||||
|
||||
- `AGENTS.md`
|
||||
- `ai/architecture-index.md`
|
||||
- `ai/repo-context.md`
|
||||
- `backend/app/historical_runner.py`
|
||||
- `backend/app/rcon_historical_leaderboards.py`
|
||||
- `backend/app/rcon_admin_log_materialization.py`
|
||||
|
||||
## Expected Files to Modify
|
||||
|
||||
- `backend/app/rcon_historical_leaderboards.py`
|
||||
- `backend/tests/test_historical_snapshot_refresh.py`
|
||||
- `docs/public-snapshot-refresh-schedule.md`
|
||||
|
||||
## Constraints
|
||||
|
||||
- Keep public GET endpoints snapshot-only.
|
||||
- Do not touch frontend, assets or server configuration.
|
||||
- Preserve the TASK-243 fixes for JSON serialization, duplicate ranking items and monthly MVP V2 fallback.
|
||||
|
||||
## Validation
|
||||
|
||||
- `python -m compileall backend/app`
|
||||
- `cd backend; python -m unittest tests.test_historical_snapshot_refresh`
|
||||
- `cd backend; python -m unittest tests.test_current_match_payload tests.test_rcon_admin_log_storage tests.test_historical_snapshot_refresh`
|
||||
|
||||
## Outcome
|
||||
|
||||
- Manual public jobs no longer pass an invalid keyword to `initialize_rcon_materialized_storage()`.
|
||||
- `ensure_storage=True` still initializes materialized storage once through the wrapper layer.
|
||||
- `ensure_storage=False` now skips the base initializer cleanly and relies on the existing non-DDL connection path.
|
||||
- Regression coverage now asserts both enabled and disabled initialization flows.
|
||||
Reference in New Issue
Block a user