database: document extra registration requirements.

It's necessary that store items be locked and protected from garbage
collection while they are being registered.  This documents that.

* guix/store/database.scm (register-path, register-items): document GC
  protection and locking requirements.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Caleb Ristvedt 2020-07-08 11:33:23 -05:00 committed by Ludovic Courtès
parent 14c422c12c
commit a05c31ab30
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 7 additions and 2 deletions

View File

@ -397,7 +397,10 @@ absolute file name to the state directory of the store being initialized.
Return #t on success.
Use with care as it directly modifies the store! This is primarily meant to
be used internally by the daemon's build hook."
be used internally by the daemon's build hook.
PATH must be protected from GC and locked during execution of this, typically
by adding it as a temp-root."
(define db-file
(store-database-file #:prefix prefix
#:state-directory state-directory))
@ -423,7 +426,9 @@ be used internally by the daemon's build hook."
"Register all of ITEMS, a list of <store-info> records as returned by
'read-reference-graph', in DB. ITEMS must be in topological order (with
leaves first.) REGISTRATION-TIME must be the registration time to be recorded
in the database; #f means \"now\". Write a progress report to LOG-PORT."
in the database; #f means \"now\". Write a progress report to LOG-PORT. All
of ITEMS must be protected from GC and locked during execution of this,
typically by adding them as temp-roots."
(define store-dir
(if prefix
(string-append prefix %storedir)