diff options
author | Caleb Ristvedt <caleb.ristvedt@cune.org> | 2020-06-01 21:43:14 -0500 |
---|---|---|
committer | Caleb Ristvedt <caleb.ristvedt@cune.org> | 2020-06-10 21:54:35 -0500 |
commit | 37545de4a3bf59611c184b31506fe9a16abe4c8b (patch) | |
tree | 2f2e008a7634262c59ac4be3ee59731fa0c6a754 /guix/licenses.scm | |
parent | 5d6e2255286e591def122ec2f4a3cbda497fea21 (diff) | |
download | guix-patches-37545de4a3bf59611c184b31506fe9a16abe4c8b.tar guix-patches-37545de4a3bf59611c184b31506fe9a16abe4c8b.tar.gz |
database: ensure update-or-insert is run within a transaction
update-or-insert can break if an insert occurs between when it decides whether
to update or insert and when it actually performs that operation. Putting the
check and the update/insert operation in the same transaction ensures that the
update/insert will only succeed if no other write has occurred in the middle.
* guix/store/database.scm (call-with-savepoint): new procedure.
(update-or-insert): use call-with-savepoint to ensure the read and the
insert/update occur within the same transaction.
Diffstat (limited to 'guix/licenses.scm')
0 files changed, 0 insertions, 0 deletions