Filter trace chunks by partition_id
Ref: #434491 (closed)
What does this MR do and why?
Similar technique used in !146164 (merged).
This MR refactors Ci::Build.with_live_trace
scope and filters trace chunks by partition_id
.
This will allow us to take advantage of partition pruning and select the right partition automatically without scanning all of them.
Example of updated query
SELECT "p_ci_builds".*
FROM "p_ci_builds"
WHERE "p_ci_builds"."type" = 'Ci::Build'
AND (EXISTS
(SELECT 1
FROM "ci_build_trace_chunks"
WHERE "ci_build_trace_chunks"."build_id" = "p_ci_builds"."id"
+ AND "ci_build_trace_chunks"."partition_id" = "p_ci_builds"."partition_id"))
AND ("p_ci_builds"."status" IN ('success',
'failed',
'canceled'))
AND (finished_at < '2024-03-05 01:52:28.274492')
Edited by Max Orefice