Retrage o metodă tranzacţională într-o tranzacţie NOUă şi opreşte drepturile care nu sunt deschise

Featurekamo-shared-library
Expediere
5 septembrie 2026 la 05:20 UTC
Autor
Kamo
Comite
3bb492b

Două soluţii care au sens doar împreună. @RetryOnDbConflict retries a methods outside sale de tranzacție, astfel încât fiecare încercare începe una nouă. Retriere în interiorul tranzacției oricare dintre acestea este subtil gresit tranzacție care a văzut SQLState 40001 nu reușește fiecare declarație ulterioară, așa că fiecare încercare suplimentară re-run-uri de lucru care nu pot comite. De asemenea, se pare ca este Lucrând, care este partea periculoasă. Jurnalul umple cu retries, metoda într-adevăr este numit de trei ori, și eroarea de la sfârșitul este cel pe care l-ar avea a avut oricum. Aşa că testul contează TRANZACŢII ÎNCEPUTE, nu încercări. Aceste două numere sunt identice în cazul de lucru și diferă în cel rupt, și nimic altceva Îi separă. A prins trei defecte reale în timp ce era scris: 1. Un consilier simplu @Component este invizibil pentru creatorul auto-proxy care @EnableTransactionManagement instals, which considers only advisorsmarked Role infrastructură. Fiecare rejudecare nu a făcut nimic. lanț interceptor, astfel încât un al doilea proces () reluat după tranzacție interceptor și re-invocat ținta direct, în interiorul eșuat tranzacţie. Fiecare încercare devine acum un invocableClone (). (3) Sfaturile nu trebuie să modifice contractul unei metode, astfel încât o excepţie verificată declarată este transportat peste limita de rejudecare și retras neschimbat. Construit pe AOP simplu de primăvară, nu @Aspect, pentru a evita punerea aspectjweaver în 60 de imagini pentru un interceptor. În al doilea rând: Serviciul aplicat pentru drepturile membrilor nu mai continuă atunci când modelul de securitate șabloane nu pot fi citite. Logging un avertisment și desfășurarea de sunete ca o alegere atentă și este opusul său șablon nu sunt doar o sursă de extra drepturile, și o valoare NUKE este modul în care un model spune "off implicit," așa că sărind peste ele lasă un drept în picioare că organizația intenționează să rețină. Rezultatul a fost apoi persistat. Prin urmare, un sughiţ tranzitoriu al bazei de date l-ar putea ajuta pe un membru acces nimeni acordat, cu o linie Warn ca singura urmă. Acum aruncă cu cauza atașată, și cele două puncte de intrare transporta @RetryOnDbConflict cauza realistă este un cucui catalog-versiune, și o rejudecare se poate întâmpla numai în cazul în care Eşecul este permis să ajungă la el. 2757 de teste verzi.

Toate modificările

Ca ceea ce vezi de transport maritim?

Fiecare dintre aceste actualizări aterizează automat în spațiul de lucru. Începe gratuit și urmăriți-l crească săptămână după săptămână.

Pornește gratuit pentru totdeaunaVezi prețurile