- Expédié
- 27 août 2026 à 23:21 UTC
- Auteur
- Kamo
- Commite
- c42a68f
Chaque numéro de document existant sur cette plate-forme est une course de contrôle et d'insertion avec pas de contrainte unique derrière elle: les numéros de citation sont COUNT(...)-1, abonnement les numéros de facture chargent chaque ligne pour l'orge en mémoire et prenez .size()-1, prêt nombres choisissent une valeur aléatoire et échouent ouvert en renvoyant nul. Deux concurremment Les auteurs lisent la même figure et écrivent un numéro un supérieur. Une facture le numéro ne peut pas être corrigé après le fait - le client a déjà les fichiers PDF Cette série est alors frappée sous une serrure de rangée à la place. Un tableau et pas une séquence: il n'y a pas de SÉQUENCE DE CREATE n'importe où sur ce point et la déclaration d'un «SequenceGénérateur rendrait un KI exportable» ddl-auto: mise à jour, qui le créerait START AVEC 1 et distribuer des ids ci-dessous 2-53 dans un schéma unique-rowid(). Une séquence ne peut pas non plus réinitialiser par an ou par an. locataire, qui est la forme d'une série de factures. findForUpdate est la seule lecture sur le dépôt - il étend Repository, pas JpaRepository, donc il n'y a pas de découverte déverrouilléeById pour atteindre par accident. insérer IfAbsent utilise REPLTANT NE RIEN PLUS NETE PAS que de SuppressionService idiome de catch-the-violation. Cet idiome possède toute sa transaction; celui-ci fonctionne à l'intérieur de l'appelant, et une violation unique avorte à un PostgreSQL/Yugabyte transaction pure et simple, donc le problème se lirait comme traité pendant la facture INSERT a échoué de toute façon. Défaillables, in extenso. RED (avant l'existence des classes): Il n'existe pas de paquet symbole: classe DocumentCounterRepository / DocumentType / DocumentNumberService MUTATION (Lock(PESSIMISTIC-ÉCRITÉ) supprimée de findForUpdate), après le faux a été conçu pour modéliser un vrai aller-retour en lecture/écriture et pour donner à chaque lecteur son propre cas: - Taille attendue: 32 mais était: 7 dans les catégories suivantes: ["INV-2026-0007", "INV-2026-0005", "INV-2026-0006", "INV-2026-0003", "INV-2026-0004", "INV-2026-0001", "INV-2026-0002" - [trouvdForUpdate doit donner pour instruction à la base de données de verrouiller la ligne. S'attendre à ce qu'il ne soit pas nul VERT après retour: Essais: 43, Défaillances: 0, Erreurs: 0, Écran: 0 Note d'honnêteté enregistrée dans le javadoc de l'essai: avec un filet Thread.yield() le Le test de simultanéité est resté VERT avec la serrure enlevée, et il est resté vert avec lire la latence seule. Il ne mord qu'une fois que la fausse mains chaque appelant son propre l'instance d'entité - qui est ce que deux contextes de persistance font réellement - et met latence sur l'écriture. Aucune base de données n'est impliquée dans ces tests; ce qu'ils prouvent est que le service circule dans sa lecture via un viseur de recherche que la base de données est appelée à serrure. La moitié de la base de données est épinglée par l'assertion d'annotation et par UX-DOCCOUNTER-ORG-TYPE-YEAR.