[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
05/07: database: Register each store item only once.
From: |
Ludovic Courtès |
Subject: |
05/07: database: Register each store item only once. |
Date: |
Sun, 23 Sep 2018 17:34:31 -0400 (EDT) |
civodul pushed a commit to branch master
in repository guix.
commit bb3b6ccb05550fbfbeb459c68819a752327d6e1e
Author: Ludovic Courtès <address@hidden>
Date: Sun Sep 23 23:11:30 2018 +0200
database: Register each store item only once.
Fixes <https://bugs.gnu.org/32600>.
Reported by Leo Famulari.
* guix/store/database.scm (register-items): Check whether TO-REGISTER is
in DB by calling 'path-id', and skip the reset-timestamps,
registration, and deduplication phases when it is.
---
guix/store/database.scm | 24 ++++++++++++++----------
1 file changed, 14 insertions(+), 10 deletions(-)
diff --git a/guix/store/database.scm b/guix/store/database.scm
index 5d094fa..341276b 100644
--- a/guix/store/database.scm
+++ b/guix/store/database.scm
@@ -290,18 +290,22 @@ Write a progress report to LOG-PORT."
(define real-file-name
(string-append store-dir "/" (basename (store-info-item item))))
- (let-values (((hash nar-size) (nar-sha256 real-file-name)))
+ ;; When TO-REGISTER is already registered, skip it. This makes a
+ ;; significant differences when 'register-closures' is called
+ ;; consecutively for overlapping closures such as 'system' and 'bootcfg'.
+ (unless (path-id db to-register)
(when reset-timestamps?
(reset-timestamps real-file-name))
- (sqlite-register db #:path to-register
- #:references (store-info-references item)
- #:deriver (store-info-deriver item)
- #:hash (string-append "sha256:"
- (bytevector->base16-string hash))
- #:nar-size nar-size
- #:time registration-time)
- (when deduplicate?
- (deduplicate real-file-name hash #:store store-dir))))
+ (let-values (((hash nar-size) (nar-sha256 real-file-name)))
+ (sqlite-register db #:path to-register
+ #:references (store-info-references item)
+ #:deriver (store-info-deriver item)
+ #:hash (string-append "sha256:"
+ (bytevector->base16-string
hash))
+ #:nar-size nar-size
+ #:time registration-time)
+ (when deduplicate?
+ (deduplicate real-file-name hash #:store store-dir)))))
(mkdir-p db-dir)
(parameterize ((sql-schema schema))
- branch master updated (e10bf49 -> fce2254), Ludovic Courtès, 2018/09/23
- 02/07: serialization: Remove redundancy in 'write-file'., Ludovic Courtès, 2018/09/23
- 03/07: store-copy: Display a progress bar when copying store items., Ludovic Courtès, 2018/09/23
- 04/07: database: 'register-items' shows a progress bar., Ludovic Courtès, 2018/09/23
- 01/07: system: Mention '--skip-checks' in initrd diagnostics., Ludovic Courtès, 2018/09/23
- 05/07: database: Register each store item only once.,
Ludovic Courtès <=
- 07/07: vm: Use "cache=loose" for all 9p mounts., Ludovic Courtès, 2018/09/23
- 06/07: vm: Disable deduplication for 'guix system vm-image'., Ludovic Courtès, 2018/09/23