Re-arrange some of the load new revision code
Try to isolate the code that inserts in to the database, so that the relevant tables can be locked during this time.
This commit is contained in:
parent
766656086f
commit
baf2b17bf8
1 changed files with 49 additions and 41 deletions
|
|
@ -196,54 +196,62 @@
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(deduplicate-inferior-packages
|
(deduplicate-inferior-packages
|
||||||
(inferior-packages inf)))))
|
(inferior-packages inf)))))
|
||||||
(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))))
|
|
||||||
(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)))
|
|
||||||
(inferior-data-4-tuples
|
(inferior-data-4-tuples
|
||||||
(log-time "getting inferior derivations"
|
(log-time "getting inferior derivations"
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(all-inferior-package-derivations store inf packages)))))
|
(all-inferior-package-derivations store inf packages)))))
|
||||||
|
|
||||||
(simple-format
|
(define loading-inferior-data
|
||||||
#t "debug: finished loading information from inferior\n")
|
(record-start-time "critical region fetching and loading inferior data"))
|
||||||
(close-inferior inf)
|
|
||||||
|
|
||||||
(let ((derivation-ids
|
(let* ((package-license-set-ids
|
||||||
(derivation-file-names->derivation-ids
|
(log-time "fetching inferior package license metadata"
|
||||||
conn
|
(lambda ()
|
||||||
(map fourth inferior-data-4-tuples)))
|
(inferior-packages->license-set-ids conn inf
|
||||||
(flat-package-ids-systems-and-targets
|
packages))))
|
||||||
(map
|
(packages-metadata-ids
|
||||||
(match-lambda
|
(log-time "fetching inferior package metadata"
|
||||||
((inferior-package-id system target derivation-file-name)
|
(lambda ()
|
||||||
(list (hashq-ref inferior-package-id->package-id-hash-table
|
(inferior-packages->package-metadata-ids
|
||||||
inferior-package-id)
|
conn packages package-license-set-ids))))
|
||||||
system
|
(package-ids
|
||||||
target)))
|
(log-time "getting package-ids"
|
||||||
inferior-data-4-tuples)))
|
(lambda ()
|
||||||
|
(inferior-packages->package-ids
|
||||||
|
conn packages packages-metadata-ids)))))
|
||||||
|
|
||||||
(insert-package-derivations conn
|
(simple-format
|
||||||
flat-package-ids-systems-and-targets
|
#t "debug: finished loading information from inferior\n")
|
||||||
derivation-ids))))
|
(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))))
|
||||||
|
|
||||||
(define (inferior-package-transitive-supported-systems package)
|
(define (inferior-package-transitive-supported-systems package)
|
||||||
((@@ (guix inferior) inferior-package-field)
|
((@@ (guix inferior) inferior-package-field)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue