- Ya
- 27 Agosti 2026, 05:35 UTC
- Mwandishi
- Kamo
- Ahadi ya
- d21e01c
The buffered uploadDocument was the one store that wrote its ImgDat with isMissing=false BEFORE sending anything, and merely re-set it to false after a successful upload. A MinIO failure therefore left a row asserting content that was never written — and asserting it in exactly the state dedup trusts, so the isMissing filter added in f848f394 would have waved it straight through. Anyone in the org uploading those same bytes afterwards would be told the platform already held them. Its @Transactional was no help. Every failure here surfaces as an ImagingException (UploadFailedException, InvalidMimeTypeException, FileExtensionBlockedException), all of them CHECKED, and Spring rolls back only for RuntimeException and Error unless told otherwise — so the rows committed on the way out. rollbackFor covers that too, and now nothing is left behind at all.