- Se descapó
- 2 de septiembre de 2026 a las 17:13 UTC
- Autor
- Kamo
- Compromit
- 24550bf
link() es "Transactional(REQUIRES-NEW), por lo que su transacción se compromete en el proxy después de que el cuerpo del método devuelva. Un claro ahorro (() de una entidad cuyo id se genera en la memoria solo cola el INSERT, por lo que llegó el veredicto de la base de datos a ese commit adentro fuera de la captura de prueba/captura en upsert (), y fuera de la captura también. La asociación es el mejor esfuerzo por diseño, lo que significa que la línea de registro era la única prueba un fracaso ha ocurrido, y no pudo disparar. El efecto no fue sutil. A través del apagón de Apagado de FECHA VOIPService registrado 11k advertencias y EmailService no registró ninguno, de la misma escritura rota: a Número de teléfono familiar coincide con varias pistas, por lo que la búsqueda del segundo propietario auto-gritó el primer inserto y lo levantó dentro de la captura, mientras que un correo La dirección coincide con una pista y nada lo siguió. El servicio que más personas usaron reportó un corte total como "0 enlazado" - indistinguible de un día tranquilo. saveAndFlush pone el fallo de nuevo dentro del código escrito para manejarlo, y él es también lo que hace que la rama de DataIntegrityViolationException sea accesible en lugar de que el código muerto. Esa rama ahora lee al ganador de nuevo en la pareja PROPItura, la única la restricción única se basa realmente en: la fila de un paciente no tiene LEAD-UID, así que el busing con llave de plomo buscó null y soltó una fila que otro escritor había comprometido perfectamente bien, una pérdida que sólo sucede bajo una carrera.