Archived
1
0
Fork 0
This repository has been archived on 2024-08-07. You can view files and clone it, but cannot push or open issues or pull requests.
guix/guix
Christopher Baines 2932591b8a
database: register-items: reduce transaction scope.
It was made transactional in a4678c6ba1, with
the reasoning to prevent broken intermediate states from being visible. I
think this means something like an entry being in ValidPaths, but the Refs not
being inserted.

Using a transaction for this makes sense, but I think using one single
transaction for the whole register-items call is unnecessary to avoid broken
states from being visible, and could block other writes to the store database
while register-items is running. Because the deduplication and resetting
timestamps happens within the transaction as well, even though these things
don't involve the database, writes to the database will still be blocked while
this is happening.

To reduce the potential for register-items to block other writers to the
database for extended periods, this commit moves the transaction to just wrap
the call to sqlite-register. This is the one place where writes occur, so that
should prevent the broken intermediate states issue above. The one difference
this will make is some of the registered items will be visible to other
connections while others may be still being added. I think this is OK, as it's
equivalent to just registering different items.

* guix/store/database.scm (register-items): Reduce transaction scope.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-09-14 10:51:26 +02:00
..
build android-repo-download: Use parallel-job-count instead of hard-coding job 2020-09-03 00:09:38 +02:00
build-system build-system: linux-module: Delete some huge items that we probably don't need. 2020-09-14 10:15:43 +02:00
import Remove (guix json) and require Guile-JSON 4.3.0+. 2020-09-08 00:47:35 +02:00
scripts daemon: Simplify interface with 'guix authenticate'. 2020-09-11 17:53:58 +02:00
store database: register-items: reduce transaction scope. 2020-09-14 10:51:26 +02:00
tests tests: Move OpenPGP helpers to (guix tests gnupg). 2020-06-16 16:10:46 +02:00
android-repo-download.scm android-repo-download: Remove unnecessary use of Guile-JSON. 2020-09-08 00:47:35 +02:00
base16.scm
base32.scm
base64.scm base64: Do not use (rnrs). 2019-12-15 00:34:05 +01:00
build-system.scm
bzr-download.scm download: Pass 'http_proxy' et al. to git, hg, etc. 2019-09-05 18:33:30 +02:00
cache.scm Remove workaround for 'time-monotonic' in Guile 2.2.2. 2020-03-22 16:49:47 +01:00
channels.scm Use 'formatted-message' instead of '&message' where appropriate. 2020-07-25 19:11:37 +02:00
ci.scm Remove (guix json) and require Guile-JSON 4.3.0+. 2020-09-08 00:47:35 +02:00
colors.scm ui: Don't disable colors when INSIDE_EMACS is set. 2020-02-24 11:01:52 +01:00
combinators.scm combinators: Fix typo. 2020-07-05 03:15:08 +05:30
config.scm.in Use "guile-zlib" and "guile-lzlib" instead of (guix config). 2020-08-24 13:35:24 +02:00
cpio.scm
cve.scm Remove (guix json) and require Guile-JSON 4.3.0+. 2020-09-08 00:47:35 +02:00
cvs-download.scm Use guile-zlib extension in build-side code. 2020-08-24 10:41:06 +02:00
deprecation.scm deprecation: Add a two-element form for simple aliases. 2020-01-12 00:19:09 +01:00
derivations.scm derivations: Avoid uses of 'write' in 'write-derivation'. 2020-08-28 23:29:07 +02:00
describe.scm guix package: Save provenance information when using '--manifest'. 2019-12-29 18:24:54 +01:00
diagnostics.scm diagnostics: Add '&formatted-message'. 2020-07-25 19:11:36 +02:00
discovery.scm discovery: Fix typo. 2020-07-05 16:07:59 +05:30
docker.scm pack: Provide a meaningful "repository name" for Docker. 2019-09-16 10:25:31 +02:00
download.scm download: Add Savannah mirror. 2020-07-20 23:25:10 +02:00
elf.scm
ftp-client.scm
gexp.scm gexp: computed-file: Prevent mistakenly overriding default option values. 2020-09-01 00:48:11 -04:00
git-authenticate.scm Use 'formatted-message' instead of '&message' where appropriate. 2020-07-25 19:11:37 +02:00
git-download.scm Remove (guix json) and require Guile-JSON 4.3.0+. 2020-09-08 00:47:35 +02:00
git.scm git: Export url-cache-directory. 2020-09-06 15:40:54 +02:00
glob.scm
gnu-maintenance.scm Use "guile-zlib" and "guile-lzlib" instead of (guix config). 2020-08-24 13:35:24 +02:00
gnupg.scm gnupg: Accept revoked keys. 2020-04-17 23:36:47 +02:00
grafts.scm grafts: Improve performance for derivations with many inputs. 2020-06-06 23:28:48 +02:00
graph.scm graph: Add 'shortest-path'. 2020-05-11 23:30:55 +02:00
hg-download.scm Use guile-zlib extension in build-side code. 2020-08-24 10:41:06 +02:00
http-client.scm download: Do not leak file descriptors on TLS ports. 2020-01-03 16:06:26 +01:00
i18n.scm
inferior.scm utils: Move <location> and '&error-location' to (guix diagnostics). 2020-07-25 19:11:36 +02:00
licenses.scm licenses: Update Zlib license URL. 2020-05-15 12:27:22 +02:00
lint.scm lint: formatting: Gracefully handle relative file names. 2020-08-23 23:05:16 +02:00
man-db.scm Use "guile-zlib" and "guile-lzlib" instead of (guix config). 2020-08-24 13:35:24 +02:00
memoization.scm
modules.scm
monad-repl.scm
monads.scm
nar.scm doc: Distinguish the "nar bundle" format from "nar". 2020-09-11 17:53:58 +02:00
openpgp.scm openpgp: Use Libgcrypt's crc24 implementation. 2020-06-23 23:39:42 +02:00
packages.scm packages: <content-hash> printer gracefully handle #f values. 2020-08-31 15:50:35 +02:00
pki.scm
profiles.scm linux-libre: Support module compression. 2020-08-25 11:53:20 +02:00
profiling.scm
progress.scm Remove workaround for 'time-monotonic' in Guile 2.2.2. 2020-03-22 16:49:47 +01:00
quirks.scm quirks: Adjust patch to allow traveling back to Dec. 2018. 2020-07-24 18:56:25 +02:00
records.scm records: Have ABI check work well for cross-compilation. 2020-04-08 00:05:45 +02:00
remote.scm Use 'formatted-message' instead of '&message' where appropriate. 2020-07-25 19:11:37 +02:00
repl.scm repl: Return stack traces along with exceptions. 2020-03-19 15:14:08 +01:00
scripts.scm scripts: Use 'define-command' and have 'guix help' use that. 2020-09-10 12:27:24 +02:00
search-paths.scm
self.scm Remove (guix json) and require Guile-JSON 4.3.0+. 2020-09-08 00:47:35 +02:00
serialization.scm serialization: 'read-byte-string' makes a single read(2) call. 2020-01-24 23:56:43 +01:00
sets.scm
ssh.scm ssh: Fix progress bar crash when there are zero items to send. 2020-09-02 23:59:24 +02:00
status.scm status: Remove extra space before ellipsis. 2020-04-19 13:27:06 +02:00
store.scm store: 'set-build-options' sends LC_MESSAGES, not LC_ALL. 2020-09-02 17:17:37 +02:00
svn-download.scm guix: svn: Allow dropping externals. 2019-11-13 22:49:47 +01:00
swh.scm Remove (guix json) and require Guile-JSON 4.3.0+. 2020-09-08 00:47:35 +02:00
tests.scm packages: Introduce <content-hash> and use it in <origin>. 2020-05-22 01:29:39 +02:00
ui.scm ui: Lexicographically sort transaction entries based on their package name. 2020-09-12 02:08:14 -04:00
upstream.scm upstream: Handle the case where the file name has no extension. 2020-07-27 13:35:49 +02:00
utils.scm Use "guile-zlib" and "guile-lzlib" instead of (guix config). 2020-08-24 13:35:24 +02:00
workers.scm