Evitar o envenenamento de transações DDL e endurecer corridas de multi-pod

FixSecurityService
Shipped
20 de abril de 2026 às 20:43 UTC
Author
Kamo
Commit
d3249b4

A auto-cura anterior colocou DDL dentro de uma @Transactional syncAll(). Quando um ALTER QUADRO ADD CONSTRAINT disparado sobre uma restrição existente (caso normal após o primeiro boot, ou o pod perdedor em uma corrida multi-pod), runIdempotent engoliu o Java excepção — mas a transacção DB circundante foi deixada num estado abortado. Cada chamada JPA subsequente, em seguida, bater `transação atual é interrompida, comandos ignorado até o fim do bloco de transação `, retirando o pod em cada reinicialização. Alterações: - syncAll () não é mais @Transactional. Cada fase é executada com a sua própria autonomia: DDL auto-compromissos por declaração fora de qualquer Primavera TX, assim um O fracasso de uma única declaração não pode envenenar nada. - assegureUniqueConstraint () agora verifica pg constraint antes de tentar ADD, assim, o erro "já existe" nunca dispara em reinícios normais. - Auto- injecção (@ Lazy self) assim os sub- métodos @ Transactional realmente fires via o proxy Spring (a chamada anterior this.syncOrgRoleRights() AOP contornado). - Documentada a análise de corrida de pods simultâneos: DDL serializada pelo CRDB, DELETES idempotent, insere race-safe via NO CONFLICT não fazer nada.

All changes

Como o que vês no transporte?

Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.

Começar Livre Para SempreVer Preços