2.3 KiB
2.3 KiB
TASK-091-sqlite-writer-hardening
Goal
Unificar y endurecer la politica de conexion SQLite para todas las rutas de escritura del backend que comparten la misma base de datos, reduciendo contencion evitable y haciendo el comportamiento consistente entre historico base, player-events y captura prospectiva RCON.
Context
La repo ya tiene varias rutas de escritura sobre el mismo SQLite:
- historico base CRCON
- player-event ledger V2
- captura prospectiva RCON
- snapshots y runners asociados
Parte del storage ya usa timeout/WAL/busy_timeout, pero no toda la capa de persistencia lo hace de forma uniforme. Antes de cualquier politica de locking entre procesos, hace falta que todas las conexiones writer-capable usen una configuracion SQLite coherente.
Scope
Backend solamente. Sin cambios en frontend.
Steps
- Auditar todas las funciones
_connect()o equivalentes que abren SQLite en:backend/app/historical_storage.pybackend/app/player_event_storage.pybackend/app/rcon_historical_storage.py- cualquier otro storage writer-capable relacionado
- Crear una utilidad compartida y pequena para abrir conexiones SQLite con politica comun de escritura.
- La politica comun debe incluir como minimo:
timeoutexplicitoPRAGMA foreign_keys = ONPRAGMA journal_mode = WALPRAGMA busy_timeoutrow_factory = sqlite3.Row
- Reusar esa utilidad en todas las capas de persistencia con escritura que comparten el mismo DB.
- Mantener compatibilidad con la ruta actual del storage y sin cambiar contratos HTTP.
- Actualizar README/runbook backend con una nota breve sobre la politica SQLite usada por writers.
Constraints
- No tocar frontend.
- No cambiar la semantica funcional de los endpoints.
- No cambiar el proveedor historico por defecto.
- No meter dependencias nuevas salvo necesidad extrema.
- Mantener la utilidad pequeña y facil de leer.
Validation
- Todas las capas writer-capable relevantes comparten la misma politica SQLite.
python -m compileall apppasa.- Las CLIs principales siguen arrancando con
--help. - La repo queda consistente.
Expected Files
backend/app/historical_storage.pybackend/app/player_event_storage.pybackend/app/rcon_historical_storage.py- un util compartido nuevo bajo
backend/app/si hace falta backend/README.md