diff options
author | Christopher Baines <mail@cbaines.net> | 2019-03-14 08:18:01 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2019-03-14 08:18:01 +0000 |
commit | d2697d8dd2b7394049b129225f7ba6ddf791bf32 (patch) | |
tree | 7e42dcf6ca7b88c1b154450856d9b90c7735f617 /guix-data-service/model/derivation.scm | |
parent | a0dd2982393fccdb6e04d16d701c8c44235d0b54 (diff) | |
download | data-service-d2697d8dd2b7394049b129225f7ba6ddf791bf32.tar data-service-d2697d8dd2b7394049b129225f7ba6ddf791bf32.tar.gz |
Avoid loading in all derivations
Just load in the ones that are not already in the database, as this
will hopefully be faster and require less memory.
Diffstat (limited to 'guix-data-service/model/derivation.scm')
-rw-r--r-- | guix-data-service/model/derivation.scm | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/guix-data-service/model/derivation.scm b/guix-data-service/model/derivation.scm index b38efc7..3104059 100644 --- a/guix-data-service/model/derivation.scm +++ b/guix-data-service/model/derivation.scm @@ -18,7 +18,7 @@ select-derivations-by-id select-derivations-and-build-status-by-file-name insert-into-derivations - derivations->derivation-ids)) + derivation-file-names->derivation-ids)) (define (select-existing-derivations file-names) (string-append "SELECT id, file_name " @@ -558,28 +558,26 @@ ORDER BY derivations.system DESC, result result-for-missing-file-names))))) -(define (derivations->derivation-ids conn derivations) - (if (null? derivations) +(define (derivation-file-names->derivation-ids conn derivation-file-names) + (if (null? derivation-file-names) '() - (let* ((derivations-count (length derivations)) + (let* ((derivations-count (length derivation-file-names)) (derivation-ids-hash-table (make-hash-table derivations-count))) (simple-format - #t "debug: derivations->derivation-ids: processing ~A derivations\n" + #t "debug: derivation-file-names->derivation-ids: processing ~A derivations\n" derivations-count) - (let* ((derivation-file-names (map derivation-file-name - derivations)) - - (existing-derivation-entries + (let* ((existing-derivation-entries (derivation-file-names->vhash conn derivation-ids-hash-table derivation-file-names)) (missing-derivations - (deduplicate-derivations - (filter (lambda (derivation) - (not (vhash-assoc (derivation-file-name derivation) - existing-derivation-entries))) - derivations))) + (map read-derivation-from-file + (deduplicate-strings + (filter (lambda (derivation-file-name) + (not (vhash-assoc derivation-file-name + existing-derivation-entries))) + derivation-file-names)))) (new-derivation-entries (if (null? missing-derivations) |