KamoCRM

Isolate call ingest per row and link only after it commits

FixVOIPService
Shipped
5 ஆகஸ்ட், 2026 அன்று 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?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing