aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2024-03-15 16:58:26 +0000
committerChristopher Baines <mail@cbaines.net>2024-03-15 16:58:26 +0000
commit1524c4d64d1e321c3cb6a5a4e3f4f77e722929ba (patch)
tree5c9a3684ef97a9167e34ea1067200235f2a1e7f6
parent676713e9d943ad2e912a7faad1b01522f9f7884b (diff)
downloadnar-herder-1524c4d64d1e321c3cb6a5a4e3f4f77e722929ba.tar
nar-herder-1524c4d64d1e321c3cb6a5a4e3f4f77e722929ba.tar.gz
Spawn cached compression fibers on the maintenance scheduler
So they don't interact with the main scheduler.
-rw-r--r--nar-herder/cached-compression.scm24
-rw-r--r--nar-herder/server.scm14
2 files changed, 22 insertions, 16 deletions
diff --git a/nar-herder/cached-compression.scm b/nar-herder/cached-compression.scm
index ef10e40..6148c7e 100644
--- a/nar-herder/cached-compression.scm
+++ b/nar-herder/cached-compression.scm
@@ -264,7 +264,7 @@
nar-source
enabled-cached-compressions
cached-compression-min-uses
- #:key (cached-compression-workers 2))
+ #:key (cached-compression-workers 2) scheduler)
(define nar-cache-bytes-metric
(make-gauge-metric metrics-registry
@@ -420,15 +420,19 @@
#:name "cached compression")))
(lambda (narinfo-id)
- (call-with-worker-thread
- consider-nar-request-channel
- (lambda (cached-bytes-by-compression-box)
- (let ((in-progress-narinfo-ids
- (map car (list-jobs))))
-
- (unless (member narinfo-id in-progress-narinfo-ids)
- (process-job narinfo-id cached-bytes-by-compression-box)))
- #t))))))
+ (spawn-fiber
+ (lambda ()
+ (call-with-worker-thread
+ consider-nar-request-channel
+ (lambda (cached-bytes-by-compression-box)
+ (let ((in-progress-narinfo-ids
+ (map car (list-jobs))))
+
+ (unless (member narinfo-id in-progress-narinfo-ids)
+ (process-job narinfo-id cached-bytes-by-compression-box)))
+ #t)))
+ scheduler
+ #:parallel? #t)))))
(define* (make-compressed-nar database
nar-source
diff --git a/nar-herder/server.scm b/nar-herder/server.scm
index d84424d..b4c0ad2 100644
--- a/nar-herder/server.scm
+++ b/nar-herder/server.scm
@@ -366,11 +366,8 @@
(when (and (not loop?)
maybe-trigger-creation-of-compressed-nars)
- (spawn-fiber
- (lambda ()
- (maybe-trigger-creation-of-compressed-nars
- (assq-ref narinfo 'id)))
- #:parallel? #t))
+ (maybe-trigger-creation-of-compressed-nars
+ (assq-ref narinfo 'id)))
(when loop?
(log-msg logger 'WARN
@@ -619,6 +616,9 @@
(make-gauge-metric metrics-registry "recent_changes_limit")))
(metric-set recent-changes-metric (assq-ref opts 'recent-changes-limit)))
+ (define maintenance-scheduler
+ (make-scheduler #:parallelism 1))
+
(let* ((database (setup-database (assq-ref opts 'database)
metrics-registry))
(canonical-storage (and=> (assq-ref opts 'storage)
@@ -669,7 +669,8 @@
enabled-cached-compressions
cached-compression-min-uses
#:cached-compression-workers
- (assq-ref opts 'cached-compression-workers)))))
+ (assq-ref opts 'cached-compression-workers)
+ #:scheduler scheduler))))
(if (string=? (assq-ref opts 'database-dump)
"disabled")
@@ -771,6 +772,7 @@
(log-msg 'DEBUG "finished maintenance setup")
(wait finished?))
+ #:scheduler maintenance-scheduler
#:hz 0
#:parallelism 1)))