Liquidity concentration
Zero-balance sweeps from virtual accounts into their physical pooling header.
Guarded by a non-blocking advisory lock and a
UNIQUE(run_date) claim, because the failure mode of a double sweep
is inventing money.
£1,980,714
swept into pooling headers, GBP equivalent, all time
No sweeps in the last 30 days
How a double sweep is prevented
-
Advisory lock
GET_LOCK('gcms_liquidity_sweeper', 0)— a second process refuses immediately rather than racing. -
Run-date claim
UNIQUE(run_date)— even a lock lost across a restart cannot sweep the day twice. -
Row locks in a total orderChild and parent locked
FOR UPDATEby ascendingaccount_id, so a sweep and a payment cannot deadlock. -
Only unheld funds, only active accountsA
FROZENaccount under a sanctions hold is never swept. Held money is already committed to a payment. -
A journal per movementBalanced debit and credit, so tomorrow morning the movement can be explained.
Sweeper runs
One row per value date, claimed before any money moves
| Value date | Status | Considered | Swept | Skipped | Started | Finished |
|---|---|---|---|---|---|---|
| 10 Jul 2026 | Completed | 19 | 16 | 3 | 10 Jul 23:05 | 10 Jul 23:09 |
| 09 Jul 2026 | Completed | 16 | 14 | 2 | 09 Jul 23:05 | 09 Jul 23:09 |
| 08 Jul 2026 | Completed | 21 | 18 | 3 | 08 Jul 23:05 | 08 Jul 23:08 |
| 07 Jul 2026 | Completed | 19 | 17 | 2 | 07 Jul 23:05 | 07 Jul 23:06 |
| 06 Jul 2026 | Completed | 20 | 19 | 1 | 06 Jul 23:05 | 06 Jul 23:07 |
| 03 Jul 2026 | Completed | 19 | 17 | 2 | 03 Jul 23:05 | 03 Jul 23:08 |