Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Backfill MongoDB data into PostgreSQL and verify ongoing parity

Ouverte
#175 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
35/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
Calme
Stack technique
mongodb, postgresql
Domaine
databases

Piste de recherche

Commencez par le contrat de domaine et le schéma d’expansion de Room/RaceSession issus de #200 et #203, puis examinez le contexte de dual-write et de deployment dans PR #171 et #176, ainsi que l’historique des migrations de schéma. Retracez les mappings requis et les contraintes de rollback avant de définir le backfill reprenable. Le travail est considéré comme terminé lorsque les vérifications de reconciliation, de retry et de concurrency, les tests ciblés et la documentation opérationnelle couvrent les critères d’acceptation listés.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

area: data enhancement priority: P1

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
Langage dominant
JavaScript
Étoiles
30
Forks
9
Métriques de merge des PR
Aucune PR mergée en 30 j

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de coder13/LetsCube

Toutes les issues de coder13/LetsCube

Issues similaires

Plus d'issues JavaScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.