aboutsummaryrefslogtreecommitdiff
path: root/guix-data-service/jobs/load-new-guix-revision.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2019-07-07 21:59:36 +0100
committerChristopher Baines <mail@cbaines.net>2019-07-07 21:59:36 +0100
commitf2d28b4def998d8cce0659deafe77d431c9d546f (patch)
tree3c3bf9c783d6b1aea94280496af7a50ccdc18b77 /guix-data-service/jobs/load-new-guix-revision.scm
parent2ea78cff47fd05d658a5f3c02f64f44c4404d995 (diff)
downloaddata-service-f2d28b4def998d8cce0659deafe77d431c9d546f.tar
data-service-f2d28b4def998d8cce0659deafe77d431c9d546f.tar.gz
Move around some of the load new revision code
To better separate the code that needs to happen after a lock has been acquired to allow concurrently loading revisions without concurrent insertion issues.
Diffstat (limited to 'guix-data-service/jobs/load-new-guix-revision.scm')
-rw-r--r--guix-data-service/jobs/load-new-guix-revision.scm145
1 files changed, 73 insertions, 72 deletions
diff --git a/guix-data-service/jobs/load-new-guix-revision.scm b/guix-data-service/jobs/load-new-guix-revision.scm
index fc76416..2b4182e 100644
--- a/guix-data-service/jobs/load-new-guix-revision.scm
+++ b/guix-data-service/jobs/load-new-guix-revision.scm
@@ -304,67 +304,55 @@
(string<? a-name
b-name)))))))
-(define (inferior-guix->package-derivation-ids store conn inf)
- (let* ((packages (log-time "fetching inferior packages"
- (lambda ()
- (deduplicate-inferior-packages
- (inferior-packages inf)))))
- (inferior-data-4-tuples
- (log-time "getting inferior derivations"
+(define (packages-and-inferior-data->package-derivation-ids conn inf
+ packages
+ inferior-data-4-tuples)
+ (let* ((package-license-set-ids
+ (log-time "fetching inferior package license metadata"
(lambda ()
- (all-inferior-package-derivations store inf packages)))))
-
- (define loading-inferior-data
- (record-start-time "critical region fetching and loading inferior data"))
-
- (let* ((package-license-set-ids
- (log-time "fetching inferior package license metadata"
- (lambda ()
- (inferior-packages->license-set-ids conn inf
- packages))))
- (packages-metadata-ids
- (log-time "fetching inferior package metadata"
- (lambda ()
- (inferior-packages->package-metadata-ids
- conn packages package-license-set-ids))))
- (package-ids
- (log-time "getting package-ids"
- (lambda ()
- (inferior-packages->package-ids
- conn packages packages-metadata-ids)))))
-
- (simple-format
- #t "debug: finished loading information from inferior\n")
- (close-inferior inf)
-
- (let* ((derivation-ids
- (derivation-file-names->derivation-ids
- conn
- (map fourth inferior-data-4-tuples)))
- (inferior-package-id->package-id-hash-table
- (alist->hashq-table
- (map (lambda (package package-id)
- (cons (inferior-package-id package)
- package-id))
- packages
- package-ids)))
- (flat-package-ids-systems-and-targets
- (map
- (match-lambda
- ((inferior-package-id system target derivation-file-name)
- (list (hashq-ref inferior-package-id->package-id-hash-table
- inferior-package-id)
- system
- target)))
- inferior-data-4-tuples))
- (package-derivation-ids
- (insert-package-derivations conn
- flat-package-ids-systems-and-targets
- derivation-ids)))
-
- (record-end-time loading-inferior-data)
-
- package-derivation-ids))))
+ (inferior-packages->license-set-ids conn inf
+ packages))))
+ (packages-metadata-ids
+ (log-time "fetching inferior package metadata"
+ (lambda ()
+ (inferior-packages->package-metadata-ids
+ conn packages package-license-set-ids))))
+ (package-ids
+ (log-time "getting package-ids"
+ (lambda ()
+ (inferior-packages->package-ids
+ conn packages packages-metadata-ids)))))
+
+ (simple-format
+ #t "debug: finished loading information from inferior\n")
+ (close-inferior inf)
+
+ (let* ((derivation-ids
+ (derivation-file-names->derivation-ids
+ conn
+ (map fourth inferior-data-4-tuples)))
+ (inferior-package-id->package-id-hash-table
+ (alist->hashq-table
+ (map (lambda (package package-id)
+ (cons (inferior-package-id package)
+ package-id))
+ packages
+ package-ids)))
+ (flat-package-ids-systems-and-targets
+ (map
+ (match-lambda
+ ((inferior-package-id system target derivation-file-name)
+ (list (hashq-ref inferior-package-id->package-id-hash-table
+ inferior-package-id)
+ system
+ target)))
+ inferior-data-4-tuples))
+ (package-derivation-ids
+ (insert-package-derivations conn
+ flat-package-ids-systems-and-targets
+ derivation-ids)))
+
+ package-derivation-ids)))
(define (inferior-package-transitive-supported-systems package)
((@@ (guix inferior) inferior-package-field)
@@ -538,18 +526,31 @@
(catch
#t
(lambda ()
- (let* ((package-derivation-ids
- (inferior-guix->package-derivation-ids store conn inf))
- (guix-revision-id
- (insert-guix-revision conn git-repository-id commit store-path)))
-
- (insert-guix-revision-package-derivations conn
- guix-revision-id
- package-derivation-ids)
-
- (simple-format
- #t "Successfully loaded ~A package/derivation pairs\n"
- (length package-derivation-ids)))
+ (let* ((packages
+ (log-time
+ "fetching inferior packages"
+ (lambda ()
+ (deduplicate-inferior-packages
+ (inferior-packages inf)))))
+ (inferior-data-4-tuples
+ (log-time
+ "getting inferior derivations"
+ (lambda ()
+ (all-inferior-package-derivations store inf packages)))))
+
+ (let* ((package-derivation-ids
+ (packages-and-inferior-data->package-derivation-ids
+ conn inf packages inferior-data-4-tuples))
+ (guix-revision-id
+ (insert-guix-revision conn git-repository-id commit store-path)))
+
+ (insert-guix-revision-package-derivations conn
+ guix-revision-id
+ package-derivation-ids)
+
+ (simple-format
+ #t "Successfully loaded ~A package/derivation pairs\n"
+ (length package-derivation-ids))))
#t)
(lambda (key . args)
(simple-format (current-error-port)