Skip to content

fix: réduire les appels API GitLab par dépôt de 18 à 4 lors de la réconciliation - #2869

Open
shikanime wants to merge 1 commit into
mainfrom
fix/gitlab-reconcile-performance
Open

shikanime wants to merge 1 commit into
mainfrom
fix/gitlab-reconcile-performance

Conversation

@shikanime

@shikanime shikanime commented Oct 16, 2026 •

Copy link
Copy Markdown
Member

Pourquoi

Une synchronisation projet re-dérivait l'état à portée projet pour chaque dépôt : chemin de groupe re-résolu via l'endpoint de recherche paginé Groups.all, attributs de groupe racine re-écrits à chaque résolution, identifiants de miroir tournés par dépôt (révoquant le jeton du dépôt précédent à chaque fois), et un Projects.edit envoyé même sans changement. Sur un projet de 80 dépôts, une sonde instrumentée mesure ~1480 appels GitLab par synchro, entièrement séquentiels — cohérent avec les réconciliations de 20 minutes rapportées (54 s auparavant sur 50 dépôts).

Quoi

  • résolution des groupes via Groups.show (lookup O(1) par chemin) au lieu de la recherche paginée
  • attributs gérés écrits seulement à la création ; suppression du re-stamp du groupe racine à chaque résolution
  • remontée de la résolution des identifiants de miroir et de l'URL interne de dépôt à une fois par projet ; rotation au plus une par synchro
  • Projects.edit ignoré quand topics, description et ci_config_path sont inchangés
  • offsetPaginate passe par défaut à 100 par page
  • le groupe projet résolu est passé directement à la réconciliation des dépôts et au purge des orphelins au lieu d'être re-résolu

Sonde instrumentée (client gitbeaker compté) : 56 → 40 appels pour un projet à 1 dépôt, 18 → 4 par dépôt supplémentaire, rotation de jeton 1/dépôt → 1/projet ; un projet de 80 dépôts passe de ~1480 à ~356 appels.

À fumer sur cpin-hp (label preview) : vérifier la durée d'une synchro complète sur le gros projet.

Références


@shikanime shikanime added the preview Deploy preview app with Argo-cd label Oct 16, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🤖 Hey !

A preview of the application is available at : https://console-pr-2869.dso.cpin-hp.numerique-interieur.fr

Please be patient, deployment may take a few minutes.

@shikanime shikanime added preview Deploy preview app with Argo-cd and removed preview Deploy preview app with Argo-cd labels Oct 16, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🤖 Hey !

A preview of the application is available at : https://console-pr-2869.dso.cpin-hp.numerique-interieur.fr

Please be patient, deployment may take a few minutes.

@shikanime
shikanime marked this pull request as ready for review October 22, 2026 12:20
@shikanime
shikanime requested a review from a team as a code owner October 22, 2026 12:20

@StephaneTrebel StephaneTrebel left a comment •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

La mutualisation des identifiants miroir et de l’état projet est pertinente, mais le lookup double-encode les chemins de groupes et le saut de Projects.edit ne rétablit plus les noms nécessaires au miroir. La CI courante échoue aussi sur isGitbeakerNotFound absent du résultat intégré ; la dernière analyse Sonar annonce « 2 New Issues » malgré son gate vert (#2869 (comment)), donc le critère de zéro nouvelle issue n’est pas démontré. Aucun ticket de livraison lié : sans ledger, avec #2691 conservée comme contexte de rotation.

Comment thread apps/server-nestjs/src/modules/gitlab/gitlab-client.service.ts Outdated
Comment thread apps/server-nestjs/src/modules/gitlab/gitlab-client.service.ts Outdated
Comment thread apps/server-nestjs/src/modules/integrations/gitlab/gitlab-client.service.ts Outdated
@shikanime
shikanime force-pushed the fix/gitlab-reconcile-performance branch from 75225e6 to 6d44c6c Compare October 22, 2026 15:31
@shikanime shikanime removed the preview Deploy preview app with Argo-cd label Oct 23, 2026
StephaneTrebel pushed a commit that referenced this pull request Oct 23, 2026
Le modèle de PR n'a aucun emplacement pour la preuve d'exécution : un
recensement de 94 PR humaines fusionnées (organisations shikanime) montre
que 54 % ajoutent à la main des preuves de vérification sans créneau
dédié. Les PR console #2884 et #2869 illustrent ce contournement ; les
organisations sœurs shikanime ont déjà adopté cette section exacte
(shikanime-labs/.github, PR #11).

Co-authored-by: Automata <automata@shikanime.studio>
@shikanime
shikanime force-pushed the fix/gitlab-reconcile-performance branch from 6d44c6c to b0eba78 Compare October 26, 2026 08:18
@github-actions github-actions Bot added the built label Oct 26, 2026
@shikanime
shikanime force-pushed the fix/gitlab-reconcile-performance branch 3 times, most recently from c08fe53 to cb9935e Compare October 26, 2026 18:05
@shikanime shikanime self-assigned this Oct 26, 2026
@shikanime shikanime added the bug Something isn't working label Oct 26, 2026
@shikanime

Copy link
Copy Markdown
Member Author

Reprise sur le head actuel (cb9935e) : les trois points bloquants sont corrigés et vérifiés sur ce tree, les preuves détaillées sont dans les réponses de chaque thread.

  1. Encodage du chemin de groupe : le chemin brut est passé à Groups.show, Gitbeaker encode seul ; garde-fou transport HTTP (msw) sur un chemin contenant /.
  2. Nom du dépôt dans le prédicat de non-changement : un nom dérivé retombe sur Projects.edit avec name: repoName ; deux régressions repo et mirror dans les specs.
  3. Import isGitbeakerNotFound : le prédicat vit dans gitlab.utils.ts et unlessNotFound couvre le rattrapage des groupes absents ; les deux scénarios 404 sont dans les specs.

Sur le critère SonarQube « zéro nouvelle issue » : le scan que vous citiez portait sur l'ancien head. Le cycle du head actuel affiche Quality Gate passed, 0 New Issues : #2869 (comment)

Sur le ticket de livraison : #2949 porte le problème et le ledger (Définition du fini), lié dans le body du PR, avec #2691 conservée comme contexte de rotation. La carte Socle est passée à « To review ».

pnpm vitest run gitlab-client.service.spec.ts gitlab.service.spec.ts → 108/108 sur ce head.

@shikanime
shikanime force-pushed the fix/gitlab-reconcile-performance branch 3 times, most recently from 0b567ef to 0bea239 Compare October 27, 2026 15:46
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: Ie088e3acac9b27f37c29ba84e622385a6a6a6964
@shikanime
shikanime force-pushed the fix/gitlab-reconcile-performance branch from 0bea239 to ee789e8 Compare October 27, 2026 15:52
@cloud-pi-native-sonarqube

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working built

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants