KamoCRM

Éviter les intoxications à la DDL et durcir les courses multi-pod

FixSecurityService
Expédié
20 avril 2026 à 20:43 UTC
Auteur
Kamo
S'engager
d3249b4

L'auto-guérison précédent a mis DDL à l'intérieur d'un "Transactional syncAll(). Quand un ALTER TABLE AJOUTER CONSTRAINT tiré sur une contrainte existante (cas normal après premier boot, ou la nacelle perdant dans une course multi-pod), runIdempotent a avalé le Java l'exception - mais la transaction DB environnante a été laissée dans un état avorté. Chaque appel JPA suivant puis touchez la transaction en cours est avortée, les commandes ignorée jusqu'à la fin de la transaction, en prenant la dose en position basse sur chaque redémarrage. Changements: - syncAll() n'est plus « transactionnel. Chaque phase s'étend avec sa propre autonomie: DDL auto-commit par déclaration en dehors de n'importe quel TX de printemps, donc a L'échec à l'état unique ne peut rien empoisonner. - assurerUniqueConstraint() vérifie maintenant la contrainte avant de tenter un DJT, Ainsi, l'erreur "déjà existe" ne s'enflamme jamais sur les redémarrages normaux. - Auto-injection (souheur paresseux) de sorte que les sous-méthodes "Transactionnel en fait" incendies par l'intermédiaire du proxy de printemps (le précédent appel.syncOrgRoleRights() l'AOP contourné). Documenté l'analyse de la race par cadavre concurrente: DDL sérialisée par la CRDB, DÉLÉTÉS idémpotent, enlève la sécurité raciale via CONFLITS NE RIEN.

Tous les changements

Comme ce que tu vois expédier ?

Tout cela arrive dans votre espace de travail par lui-même. Commencez sur le plan gratuit et relisez cette page dans un mois.

Commencez gratuitement pour toujoursPrix de visualisation