- Expédié
- 5 septembre 2026 à 05:20 UTC
- Auteur
- Kamo
- Commite
- 3bb492b
Deux solutions qui n'ont de sens qu'ensemble. "RetryOnDbConflict revec une méthode EXTÉRIEUR DE sa transaction, de sorte que chaque tentative commence un nouveau. Réessayer à l'intérieur de la transaction - qui est ce que vous obtenez si Tout cela est subtilement faux - n'est pas un avantage moindre, mais pas du tout: a une transaction qui a vu SQLState 40001 échoue à chaque instruction suivante, donc chaque tentative supplémentaire refait des travaux qui ne peuvent pas s'engager. Il semble aussi que c'est le travail, qui est la partie dangereuse. Le log se remplit de réarroulement, la méthode vraiment est appelé trois fois, et l'erreur à la fin est celui que vous auriez C'était en tout cas. Donc le test compte TRANSACTIONS STARTES, pas les tentatives. Ces deux nombres sont identiques dans le cas de travail et diffèrent par la rupture, et rien d'autre les sépare. Il a attrapé trois défauts réels pendant que cela était écrit: 1. Un conseiller de l'associé est invisible pour le créateur d'auto-pouvoir qui EnableTransactionManagement, qui ne prend en compte que les conseillers marqués ROLE-INFRASTRUCTURE. Tous les rétrécissements n'ont rien fait en silence. chaîne intercepteurs, donc une deuxième poursuite() a repris au-delà de la transaction intercepteur et réinvocation de la cible directement, à l'intérieur de l'échec transactionnelle. Chaque tentative obtient maintenant un clone() invocable. 3. Les conseils ne doivent pas modifier le contrat d'une méthode, de sorte qu'une exception déclarée vérifiée est reporté à travers la frontière de réessai et renommé inchangé. Construit sur l'AOP de printemps, non 'Aspect', pour éviter de mettre l'aspectjweaver dans soixante images pour un intercepteur. Deuxièmement: MemberRightsAppliedService ne se poursuit plus lorsque le modèle de sécurité les modèles ne peuvent pas être lus. Enregistrer un avertissement et porter des sons comme le choix judicieux et est son contraire - les modèles ne sont pas seulement une source de supplément droits, et une valeur NUKE est la façon dont un modèle dit "off par défaut", donc les sauter laisse un droit que l'organisation a l'intention de refuser. Le résultat a ensuite persisté. Un hoquet de base de données transitoire pourrait donc remettre un membre l'accès à personne n'est accordé, avec une seule ligne WARN comme seule trace. Il lance maintenant avec la cause attachée, et les deux points d'entrée portent: une cause réaliste est une bosse de conversion du catalogue, et un nouvel essai ne peut se produire que si le l'échec est autorisé à y parvenir. 2757 test vert.