Parallelise inserting derivation counts

This commit is contained in:
Christopher Baines 2024-12-21 08:39:36 +00:00
parent 6ce51e8880
commit 50127de12a

View file

@ -2882,38 +2882,45 @@ SKIP LOCKED")
(when result
(fibers-parallel
(with-postgresql-connection
(simple-format #f "post load-new-guix-revision ~A counts" id)
(lambda (conn)
(let ((revision-id
(guix-revision-id-for-job conn id)))
(with-time-logging
(simple-format
#f "inserting guix_revision_package_derivation_distribution_counts for revision ~A"
revision-id)
(let ((system-ids-and-targets
(exec-query
conn
"
(let ((revision-id
system-ids-and-targets
(with-postgresql-connection
(simple-format #f "post load-new-guix-revision ~A counts" id)
(lambda (conn)
(let ((revision-id
(guix-revision-id-for-job conn id)))
(values
revision-id
(exec-query
conn
"
SELECT DISTINCT system_id, target
FROM package_derivations
INNER JOIN guix_revision_package_derivations
ON package_derivations.id = guix_revision_package_derivations.package_derivation_id
WHERE revision_id = $1"
(list revision-id))))
(list revision-id))))))))
(with-postgresql-transaction
conn
(lambda (conn)
(for-each
(match-lambda
((system-id target)
(insert-guix-revision-package-derivation-distribution-counts
conn
revision-id
system-id
target)))
system-ids-and-targets))))))))
(with-time-logging
(simple-format
#f "inserting guix_revision_package_derivation_distribution_counts for revision ~A"
revision-id)
(fibers-batch-for-each
(match-lambda
((system-id target)
(with-postgresql-connection
(simple-format #f "post load-new-guix-revision ~A counts" id)
(lambda (conn)
(with-postgresql-transaction
conn
(lambda (conn)
(insert-guix-revision-package-derivation-distribution-counts
conn
revision-id
system-id
target)))))))
parallelism
system-ids-and-targets)))
(with-postgresql-connection
(simple-format #f "post load-new-guix-revision ~A" id)