Sync queue
Sync jobs run one at a time per organization. Up to two more can be queued while one is running — for a total cap of 3 open jobs (1 running + 2 queued).
Why a queue
- You can fire a per-company sync while a full org sync is running. The per-company job waits its turn.
- The cron also enqueues; manual syncs and cron compete for the same slot.
Duplicate protection
If a job with the same target + same sources + same signal types + similar timespan (±1 h) is already running or queued, the new request is rejected with 409 Same sync already running. Wait for it or cancel the existing one.
Cancellation
Click the × on any running or queued row in the sidebar. Cancelling a running job:
- Aborts the in-flight Claude / linkdapi requests immediately
- Skips
markOrgSynced(last-sync timestamp does not advance) - Skips
notifyOrg(no notification fires) - Signals already inserted up to that point stay — we don't roll back
After cancel, the next queued job (if any) starts within ~1 second.
Limits
- 3 open jobs max (cap full = 429 response, toast: "Queue full")
- In-memory state — a backend restart wipes the queue. Re-trigger anything you need.