aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2019-12-05 16:23:51 +0100
committerChristopher Baines <mail@cbaines.net>2019-12-05 16:23:51 +0100
commitea792dfa34639bab1b354247c0da97fed3b6f0d8 (patch)
tree0fe0d3c293d2717133e9cec4628bac9e7d3696f2
parentf604843315b86aee1e4cbcadbde5c86e0359c08d (diff)
downloaddata-service-ea792dfa34639bab1b354247c0da97fed3b6f0d8.tar
data-service-ea792dfa34639bab1b354247c0da97fed3b6f0d8.tar.gz
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.
-rw-r--r--guix-data-service/model/nar.scm32
1 files changed, 16 insertions, 16 deletions
diff --git a/guix-data-service/model/nar.scm b/guix-data-service/model/nar.scm
index d3a524e..b8e39e1 100644
--- a/guix-data-service/model/nar.scm
+++ b/guix-data-service/model/nar.scm
@@ -226,21 +226,22 @@ VALUES ($1, $2)")
SELECT DISTINCT derivation_output_details.path
FROM derivations
INNER JOIN derivation_outputs
- ON derivations.id = derivation_outputs.id
+ ON derivations.id = derivation_outputs.derivation_id
INNER JOIN derivation_output_details
ON derivation_outputs.derivation_output_details_id = derivation_output_details.id
-WHERE file_name IN (
- SELECT derivation_file_name
- FROM builds
- INNER JOIN build_status
- ON builds.id = build_status.build_id
- WHERE
- build_server_id = $1 AND
- build_status.status = 'succeeded'
-) AND derivation_output_details.path NOT IN (
- SELECT store_path FROM nars
-) AND
- derivations.id IN (
+WHERE derivation_output_details.path NOT IN (
+ SELECT store_path
+ FROM nars
+ INNER JOIN narinfo_signatures
+ ON nars.id = narinfo_signatures.nar_id
+ INNER JOIN narinfo_signature_data
+ ON narinfo_signatures.narinfo_signature_data_id = narinfo_signature_data.id
+ INNER JOIN narinfo_fetch_records
+ ON narinfo_signature_data.id = narinfo_fetch_records.narinfo_signature_data_id
+ WHERE narinfo_fetch_records.build_server_id = $1
+)
+ AND derivations.system = 'x86_64-linux'
+ AND derivations.id IN (
SELECT derivation_id
FROM 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
- build-server-id)))))
+ (map car (exec-query conn query (list (number->string build-server-id)))))
(define (select-nars-for-output conn output-file-name)
(define query