- Spegnimento
- 20 aprile 2026 alle ore 20:43 UTC
- Autore
- Kamo
- Impegno
- d3249b4
Il precedente self-heal ha messo DDL all'interno di un @Transactional syncAll(). Quando un ALTER TABLE ADD CONSTRAINT licenziato su un vincolo esistente (caso normale dopo primo boot, o il pod perdente in una gara multi-pod), runIdempotent inghiottito il Java eccezione — ma la transazione DB circostante è stata lasciata in uno stato abortito. Ogni successiva chiamata JPA quindi colpire `correzione corrente viene annullata, comandi ignorato fino alla fine del blocco delle transazioni `, portando il pod giù su ogni riavvio. Modifiche: - syncAll() non è più @Transactional. Ogni fase funziona con la propria autonomia: DDL autocomandi per dichiarazione al di fuori di qualsiasi TX di primavera, quindi un l'insufficienza dello stato unico non può avvelenare nulla. - assicurarsiUniqueConstraint() ora controlla pg constraint prima di tentare ADD, così l'errore "già esiste" non accende mai riavviamento normale. - Auto-iniezione (@Lazy self) in modo che i sub-metodos' @Transactional effettivamente incendi tramite il proxy primavera (la precedente chiamata.syncOrgRoleRights() bypassato AOP). - Documentato l'analisi della corsa concorrente-pod: DDL serializzato da CRDB, DELETEs idempotent, inserisce la gara-safe via ON CONFLICT NONHING.