- Navios
- 5 de setembro de 2026 às 05:20 UTC
- Autor
- Kamo
- Enviar
- 3bb492b
Duas soluções que só fazem sentido juntos. @RetryOnDbConflito repete um método FORA de sua transação, então cada tentativa Começa um novo. Tentar novamente dentro da transação — que é o que você obtém se nada disto é sutilmente errado — não é um benefício menor, mas nenhum: transação que viu SQLState 40001 falha em cada instrução subsequente, então cada tentativa extra re-runs trabalho que não pode commit. Também parece que é. O trabalho, que é a parte perigosa. O log preenche com repetições, o método realmente é chamado três vezes, e o erro no final é o que você teria Tinha mesmo. Assim, o teste conta TRANSACÇÕES INÍCIO, não tentativas. Esses dois números são idêntico no caso de trabalho e diferente no quebrado, e nada mais Separa-os. Pegou três defeitos reais enquanto isto estava sendo escrito: 1. Um conselheiro simples @Component é invisível para o criador auto-proxy que @EnableTransactionManagement instala, que considera apenas os assessores marcados ROLE INFRAESTRUTURA. Cada repetição silenciosamente não fez nada. cadeia interceptor, então um segundo proceed() retomado após a transação interceptor e reinvocou o alvo diretamente, dentro da falha transacção. Cada tentativa agora recebe um invocávelClone(). 3. O conselho não deve alterar o contrato de um método, então uma exceção declarada verificada é transportado através do limite de reteste e retrown inalterado. Construído em simples Primavera AOP, não @Aspect, para evitar colocar aspectjweaver em 60 imagens para um interceptor. Segundo: Direitos de MembroAplicadoServiço não continua mais quando o modelo de segurança os modelos não podem ser lidos. Registrar um aviso e continuar soa como o escolha cuidadosa e é o seu oposto — modelos não são apenas uma fonte de extra direitos, e um valor NUKE é como um modelo diz "desligado por padrão", então pulá-los deixa uma posição certa que a organização pretende reter. O resultado foi então persistido. Um soluço de banco de dados transitório poderia, portanto, entregar um membro acesso ninguém concedido, com uma linha warn como o único vestígio. Agora joga com a causa anexada, e os dois pontos de entrada carregam @RetryOnDbConflito — o causa realista é um bump catálogo-versão, e uma repetição só pode acontecer se o O fracasso é permitido alcançá-lo. 2757 testes verdes.