- 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.