fix: correctly iterate quote outcomes using computed_at
All checks were successful
deploy / deploy (push) Successful in 43s
All checks were successful
deploy / deploy (push) Successful in 43s
Proof: The quote outcomes logic was limited to checking the 1000 most recent submissions, meaning old trades during the 2 day downtime were never checked for completion once they fell out of the recent window. Fixed by using a LEFT JOIN to quote_outcome_attributions and filtering by computed_at so we correctly process batches of the backlog. Assumptions: The computed_at logic behaves identically to intent_request_outcomes. Still fake: N/A
This commit is contained in:
parent
35628de07a
commit
44b1b3128d
1 changed files with 16 additions and 8 deletions
|
|
@ -4475,18 +4475,26 @@ export async function refreshQuoteOutcomes(pool, {
|
||||||
submissionLimit = 1000,
|
submissionLimit = 1000,
|
||||||
inventoryLimit = 50000,
|
inventoryLimit = 50000,
|
||||||
} = {}) {
|
} = {}) {
|
||||||
const safeSubmissionLimit = Math.max(1, Number(submissionLimit) || 50000);
|
const safeSubmissionLimit = Math.max(1, Number(submissionLimit) || 1000);
|
||||||
const safeInventoryLimit = Math.max(1, Number(inventoryLimit) || 50000);
|
const safeInventoryLimit = Math.max(1, Number(inventoryLimit) || 50000);
|
||||||
const submissionsResult = await pool.query(
|
const submissionsResult = await pool.query(
|
||||||
`
|
`
|
||||||
SELECT event_id, observed_at, ingested_at, quote_id, payload
|
WITH recent_submissions AS (
|
||||||
FROM (
|
SELECT s.event_id, s.observed_at, s.ingested_at, s.quote_id, s.payload
|
||||||
SELECT event_id, observed_at, ingested_at, quote_id, payload
|
FROM trade_execution_results s
|
||||||
FROM trade_execution_results
|
LEFT JOIN ${QUOTE_OUTCOMES_TABLE} o
|
||||||
WHERE payload->>'status' = 'submitted'
|
ON o.quote_id = s.quote_id
|
||||||
ORDER BY COALESCE(observed_at, ingested_at) DESC
|
WHERE s.payload->>'status' = 'submitted'
|
||||||
|
AND (
|
||||||
|
o.quote_id IS NULL
|
||||||
|
OR o.outcome_status IN ('not_filled', 'submitted', 'awaiting_outcome')
|
||||||
|
OR COALESCE(s.observed_at, s.ingested_at) > o.computed_at
|
||||||
|
)
|
||||||
|
ORDER BY COALESCE(s.observed_at, s.ingested_at) DESC
|
||||||
LIMIT $1
|
LIMIT $1
|
||||||
) recent_submissions
|
)
|
||||||
|
SELECT event_id, observed_at, ingested_at, quote_id, payload
|
||||||
|
FROM recent_submissions
|
||||||
ORDER BY COALESCE(observed_at, ingested_at) ASC
|
ORDER BY COALESCE(observed_at, ingested_at) ASC
|
||||||
`,
|
`,
|
||||||
[safeSubmissionLimit],
|
[safeSubmissionLimit],
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue