Backfill MongoDB data into PostgreSQL and verify ongoing parity
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- mongodb, postgresql
- Área
- databases
Línea de trabajo
Comienza con el contrato de dominio y el esquema de expansión de Room/RaceSession de #200 y #203; después revisa el contexto de dual-write y deployment en PR #171 y #176, además del historial de migraciones del esquema. Traza los mappings necesarios y las restricciones de rollback antes de definir el backfill reanudable. Se considera terminado cuando las comprobaciones de reconciliation, retry y concurrency, las pruebas específicas y la documentación operativa cubren los criterios de aceptación enumerados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Part of #199.
Goal
Turn PostgreSQL dual writes into a trustworthy migration target by copying historical MongoDB data and continuously checking parity.
For the competition-room foundation, this backfill must target the new Room/RaceSession model rather than preserving the current assumption that a room is itself one racing session.
RaceSession mapping
- Convert each existing MongoDB room into one PostgreSQL Room plus one RaceSession for its current event.
- Attach every embedded attempt to that RaceSession while preserving deterministic attempt and solve IDs.
- Populate session participant state according to the approved domain contract.
- Preserve room identity, access code, ownership, privacy, timestamps, and deletion/expiration state.
- Make the mapping explicit and repeatable; do not attempt to infer event sessions whose attempts were already deleted by the legacy event-change behavior.
- Verify concurrent live writes are neither lost nor duplicated during the backfill.
Acceptance criteria
- Implement an idempotent, resumable backfill for users/preferences, rooms, race sessions, participant state, attempts, durable solve results, and sanitized metrics.
- Support dry-run, bounded batches, progress checkpoints, and safe retries.
- Do not copy OAuth access tokens or prohibited metric fields.
- Produce reconciliation output for record counts, missing identifiers, duplicate identifiers, room/session relationships, penalty fields, and representative aggregates.
- Verify every attempt belongs to the expected RaceSession and every RaceSession belongs to the expected Room.
- Verify writes arriving during the backfill are not lost or duplicated.
- Document operational invocation, expected runtime/load, alerts, failure recovery, and how to rerun only failed ranges.
- Add focused tests for deterministic IDs, cursor boundaries, retry behavior, session mapping, and reconciliation failures.
Dependencies
- Stable production dual writes from PR #171, deployed through #176.
- The Room/RaceSession domain contract and expansion schema from #200 and #203.
- The schema and migration history must remain compatible with rollback requirements.
Unlocks
- #202
- #174
- #160
- Lenguaje dominante
- JavaScript
- Estrellas
- 30
- Forks
- 9
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de coder13/LetsCube
-
Dificultad 3/5 1-2 días Aptitud para principiantes 65/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
-
area: data area: platform enhancement priority: P1
Dificultad 5/5 Más de una semana Aptitud para principiantes 28/100
Todos los issues de coder13/LetsCube
Issues similares
-
curation good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
amponce/archive-movie-browser#186 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
clerk/javascript#9852 ·
-
bug p1 tools
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
HarperFast/skills#96 ·
-
factory-active factory-automatic task-bug-reproduction-cannot-reproduce task-identify-harness-labels-done task-identify-issue-type-done
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100