Isolate call ingest per row and link only after it commits

FixVOIPService
Shipped
August 5, 2026 at 6:13 PM UTC
Author
Kamo
Commit
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.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing