Skip to content

🐛 [BUG] - SonarQube : ensureUser non idempotent sur la course users/create (400 already exists) #2633

Description

@shikanime

Description

Dans le cadre de la campagne d'idempotence des créations de ressources (#2605, #2623, #2624, #2626, #2627, #2632), corrigée sur registry, Nexus, GitLab, vault-argocd et Keycloak, le module SonarQube présente le même défaut.

ensureUser (sonarqube.service.ts:203) appelle client.createUser (sonarqube-client.service.ts:291), qui émet POST users/create et lève sur toute réponse non-2xx. Lors de deux synchronisations concurrentes, le second createUser reçoit 400 already exists et interrompt toute la synchronisation du projet.

ensureGroup (ligne 359) applique déjà le motif read-then-create ; ensureUser doit bénéficier de la même robustesse (tolérer un 400/409 « already exists » ou revérifier l'existence avant le POST).

Etapes de reproduction

  1. Déclencher deux synchronisations SonarQube d'un même projet en parallèle (double-sync concurrent).
  2. Les deux exécutions passent la lecture d'existence, puis émettent chacune POST users/create pour le même utilisateur.
  3. La seconde écriture perdante reçoit 400 already exists et fait échouer toute la synchronisation.

Captures d'écran

No response

Logs

POST /api/users/create → 400 {"errors":[{"msg":"User already exists"}]}

Navigateurs

No response

OS

No response

Version de la console impactée

No response

Définition du fini

  • Le correctif est terminé
  • Les tests liés à ce correctif ont été ajoutés
  • La communication avec les autres équipes impliquées par ce correctif a été faite

Activity

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

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions