fix(server-nestjs): make Nexus create paths idempotent - #2627
Conversation
d017f6a to
77bceb6
Compare
shikanime
left a comment
There was a problem hiding this comment.
Verdict : Changements demandés — la PR ne compile pas (PR propriétaire : commentaire bloquant, non request-changes).
La logique d idempotence des méthodes ensure* est correcte, mais la PR supprime l import de NexusError (lignes 1-4) tout en continuant à l utiliser dans isAlreadyExistsError (lignes 347-348). tsc échouera donc sur NexusError non déclaré.
- nexus-client.service.ts:1-4,347-348 — [🔴 Bloquant]
NexusErrorest référencé dansisAlreadyExistsErrormais n est plus importé (l edit retireimport { NexusError } from "./nexus-http-client.service"). Suggestion : remettreimport { NexusError, NexusHttpClientService } from "./nexus-http-client.service". - nexus.utils.ts / gitlab.utils.ts / vault.utils.ts — [🟠 Important] Les gardes
isVaultNotFound/isVaultBadRequest/isNexusNotFound/isGitbeakerUnauthorizedsont déjà fusionnées surmain(ec9c18a914). Cette PR les re-implémente : rebasez surmainpour ne garder que la logiqueensure*, sinon conflit garanti (voir #2626 CONFLICTING). - nexus-client.service.ts:347-350 — [🟡 Nit]
isAlreadyExistsErrorne traite que les 4xx ; un test sur le casstatus:undefinedmanque.
✨ Le motif ensure* + relecture existant sur 409/already-exists couvre tous les chemins de création Nexus. Rebasez sur main et corrigez l import avant de sortir du draft.
77bceb6 to
a1fb59c
Compare
…tolerance) Refs #2619 Co-authored-by: Automata <automata@shikanime.studio> Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr> Change-Id: I7119237dea4827b8ea5a8ed631d47c1d6a6a6964
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr> Change-Id: I2796efd52dbe032751eb5a313aeede8a6a6a6964
a1fb59c to
ff3fd2a
Compare
|
|
🤖 Hey ! A preview of the application is available at : https://console-pr-2627.dso.cpin-hp.numerique-interieur.fr Please be patient, deployment may take a few minutes. |

0 New Issues
0 Fixed Issues
0 Accepted Issues
Issues liées
#2619 (fermer délibérément après la fusion)
Quel est le comportement actuel ?
Lors de la synchronisation Nexus d'un projet, chaque ressource est créée après une lecture préalable (GET puis POST). Sous synchronisations concurrentes, deux exécutions peuvent valider la lecture puis l'écriture perdante échoue avec un NexusError (statut 409 ou message évoquant une ressource déjà présente), interrompant toute la synchronisation du projet.
Comportement attendu
La création concurrente d'une ressource déjà présente ne doit plus interrompre la synchronisation : le client récupère la ressource existante et la retourne, laissant la branche de mise à jour du demandeur réconcilier l'écart au cycle suivant.
Changements