A linha de auditoria de saída foi escrita por uma inerte REQUIRES NOV

FixSecurityService
Shipped
27 de agosto de 2026 às 09:09 UTC
Author
Kamo
Commit
31379b6

Foi um método no ExchangeQueryService anotado @Transactional(REQUIRES NEW), chamado de dois ajudantes privados na mesma classe. O conselho de transação da Spring vive em um proxy e uma auto-invocação nunca atinge Então a anotação não fez nada: a linha entrou na transação do chamador. Isso é precisamente ao contrário para o que grava. Uma consulta de saída falhada seria Rebobinaram o registro de sua própria falha – e "Pedimos e eles recusaram" é a fila que alguém investiga uma lacuna na história de um paciente que realmente precisa. A o livro de apenas as consultas bem sucedidas responde a pergunta fácil e perde o Difícil. Pior ainda, discover() e queryDocuments() são readOnly = true, então a escrita não tinha nenhum negócio estar em sua transação em tudo. Extraído para ExchangeRequestRecorder, um feijão próprio, exatamente como BulkExportJobState foi mais cedo pela mesma razão. Um teste unitário não pode captar isto — construir o serviço directamente significa que existe Também não há procuração, por isso passou enquanto estava errado. Então o guarda é estrutural: o teste do gravador afirma que o método é público (um método não público nunca se aproxima, tornando sua anotação inerte) e que sua propagação é REQUERES NOVO. Ambas as metades são invisíveis em um local de chamada e ambos têm que segurar.

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