fix: memory leak in history-writer loading massive payload
All checks were successful
deploy / deploy (push) Successful in 42s
All checks were successful
deploy / deploy (push) Successful in 42s
Proof: History writer was crashing with OOM because the payload of intent_inventory_snapshots is massive and loading 5000 of them into memory takes 200MB. Fixed by modifying the query to only select the spendable and synced_at fields. Assumptions: We only need spendable and synced_at fields from inventory payloads. Still fake: N/A
This commit is contained in:
parent
f655f1a63a
commit
96a047d676
1 changed files with 3 additions and 3 deletions
|
|
@ -4514,7 +4514,7 @@ export async function refreshQuoteOutcomes(pool, {
|
|||
ORDER BY COALESCE(observed_at, ingested_at) ASC
|
||||
`, [quoteIds]),
|
||||
pool.query(`
|
||||
SELECT event_id, observed_at, ingested_at, quote_id, payload
|
||||
SELECT event_id, observed_at, ingested_at, quote_id, jsonb_build_object('spendable', payload->'spendable', 'synced_at', payload->'synced_at') AS payload
|
||||
FROM (
|
||||
SELECT event_id, observed_at, ingested_at, quote_id, payload
|
||||
FROM intent_inventory_snapshots
|
||||
|
|
@ -5333,13 +5333,13 @@ async function loadIntentInventorySnapshotsForRequestRefresh(pool, {
|
|||
return pool.query(
|
||||
`
|
||||
WITH previous_snapshot AS (
|
||||
SELECT event_id, observed_at, ingested_at, quote_id, payload, COALESCE(observed_at, ingested_at) AS sort_at
|
||||
SELECT event_id, observed_at, ingested_at, quote_id, jsonb_build_object('spendable', payload->'spendable', 'synced_at', payload->'synced_at') AS payload, COALESCE(observed_at, ingested_at) AS sort_at
|
||||
FROM intent_inventory_snapshots
|
||||
WHERE COALESCE(observed_at, ingested_at) < $1
|
||||
ORDER BY COALESCE(observed_at, ingested_at) DESC
|
||||
LIMIT 1
|
||||
), following_snapshots AS (
|
||||
SELECT event_id, observed_at, ingested_at, quote_id, payload, COALESCE(observed_at, ingested_at) AS sort_at
|
||||
SELECT event_id, observed_at, ingested_at, quote_id, jsonb_build_object('spendable', payload->'spendable', 'synced_at', payload->'synced_at') AS payload, COALESCE(observed_at, ingested_at) AS sort_at
|
||||
FROM intent_inventory_snapshots
|
||||
WHERE COALESCE(observed_at, ingested_at) >= $1
|
||||
ORDER BY COALESCE(observed_at, ingested_at) ASC
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue