2
0
Fork 0
mirror of git://git.savannah.gnu.org/guix/guix-cuirass.git synced 2023-12-14 06:03:04 +01:00
guix-cuirass/src
Mathieu Othacehe b67f38a7b9
Queue write operations.
SQLite only allows one concurrent write query operation. Having multiple
database workers calling "db-update-build-status!", will thus increase worker
starvation. Every write operation will also be done is a single transaction.

For those reasons, create a database worker dedicated to write queries. Have
this worker queue work and issue all the queued work queries in a single
transaction.

* .dir-locals.el: Add with-db-writer-worker-thread.
* src/cuirass/database.scm (with-queue-writer-worker): Rename
"with-registration-workers" macro.
(%db-writer-channel): Rename "%db-registration-channel" variable.
(with-queue-writer-worker): Rename "with-registration-workers".
(db-register-builds): Use "with-db-writer-worker-thread" instead of
"with-db-registration-worker-thread".
(db-update-build-status!): Ditto
* src/cuirass/utils.scm (make-worker-thread-channel): Add "queue-size" and
"queue-proc" arguments.
(call-with-worker-thread): Add "options" argument.
* bin/cuirass.in (main): Use "with-queue-writer-worker" instead of
"with-registration-workers". Modify the macro scope to include all the
possible write operations.
2020-10-14 14:15:09 +02:00
..
cuirass Queue write operations. 2020-10-14 14:15:09 +02:00
sql Optimize build query. 2020-10-07 13:07:05 +02:00
static Add metrics support. 2020-09-14 14:32:12 +02:00
web/server web: server: Remove with-ignored-disconnects. 2020-08-04 18:14:51 +02:00
cuirass.scm cuirass: Stop λ/lambda mixing. 2017-07-06 10:03:16 +02:00
schema.sql Optimize build query. 2020-10-07 13:07:05 +02:00