- Ya
- 5 Agosti 2026, 18:13 UTC
- Mwandishi
- Kamo
- Ahadi ya
- 9a6acfb
Two faults with one root: ingest participated in the sweep's transaction. A throw inside a participating transaction marks the SHARED transaction rollback-only. syncCallLogs swallows per-entry failures to keep sweeping, so one malformed CDR quietly discarded every call, voicemail, extension and device write from the whole tick — surfacing only as an UnexpectedRollbackException at commit. ingest now runs REQUIRES_NEW, so a bad row costs that row. Linking also moved out of ingest to the caller, after it has committed, so a lead link can never outlive the call it describes. Combined with the natural-key source ids in shared-lib, a rolled-back sweep now re-runs cleanly instead of duplicating every entry it had already linked.