Fix and improve fetching outputs to fetch from build servers

The join on derivation_outputs was completely wrong, so fix that.

Also, rather than only selecting outputs where there's a corresponding build,
just eliminate outputs where there is an entry in the nars table, fetched from
the relevant build server.

Also just look at x86_64-linux derivations, because there's no filtering on
relevant derivations for a build server at the moment.
This commit is contained in:
Christopher Baines 2019-12-05 16:23:51 +01:00
parent 9e5cde80b3
commit aa3af00e07

View file

@ -226,21 +226,22 @@ VALUES ($1, $2)")
SELECT DISTINCT derivation_output_details.path SELECT DISTINCT derivation_output_details.path
FROM derivations FROM derivations
INNER JOIN derivation_outputs INNER JOIN derivation_outputs
ON derivations.id = derivation_outputs.id ON derivations.id = derivation_outputs.derivation_id
INNER JOIN derivation_output_details INNER JOIN derivation_output_details
ON derivation_outputs.derivation_output_details_id = derivation_output_details.id ON derivation_outputs.derivation_output_details_id = derivation_output_details.id
WHERE file_name IN ( WHERE derivation_output_details.path NOT IN (
SELECT derivation_file_name SELECT store_path
FROM builds FROM nars
INNER JOIN build_status INNER JOIN narinfo_signatures
ON builds.id = build_status.build_id ON nars.id = narinfo_signatures.nar_id
WHERE INNER JOIN narinfo_signature_data
build_server_id = $1 AND ON narinfo_signatures.narinfo_signature_data_id = narinfo_signature_data.id
build_status.status = 'succeeded' INNER JOIN narinfo_fetch_records
) AND derivation_output_details.path NOT IN ( ON narinfo_signature_data.id = narinfo_fetch_records.narinfo_signature_data_id
SELECT store_path FROM nars WHERE narinfo_fetch_records.build_server_id = $1
) AND )
derivations.id IN ( AND derivations.system = 'x86_64-linux'
AND derivations.id IN (
SELECT derivation_id SELECT derivation_id
FROM package_derivations FROM package_derivations
INNER JOIN guix_revision_package_derivations INNER JOIN guix_revision_package_derivations
@ -252,10 +253,9 @@ WHERE file_name IN (
",") ",")
") ")
) )
LIMIT 1500")) LIMIT 10000"))
(map car (exec-query conn query (list (number->string (map car (exec-query conn query (list (number->string build-server-id)))))
build-server-id)))))
(define (select-nars-for-output conn output-file-name) (define (select-nars-for-output conn output-file-name)
(define query (define query