aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/datastore
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2022-01-23 13:13:08 +0100
committerChristopher Baines <mail@cbaines.net>2022-01-31 18:20:14 +0000
commitd731ea11a83802a6dec00a9586ba8015802ee6a1 (patch)
treeb172d554926e4701fd187df5bb6ed21d3e89ce10 /guix-build-coordinator/datastore
parent6b5a1487af61b2ecd59778713162a2982295728e (diff)
downloadbuild-coordinator-d731ea11a83802a6dec00a9586ba8015802ee6a1.tar
build-coordinator-d731ea11a83802a6dec00a9586ba8015802ee6a1.tar.gz
More efficiently filter and select builds in the allocator
Specifically the derivation ordered allocator.
Diffstat (limited to 'guix-build-coordinator/datastore')
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm29
1 files changed, 9 insertions, 20 deletions
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm
index 398c3bd..845f8b2 100644
--- a/guix-build-coordinator/datastore/sqlite.scm
+++ b/guix-build-coordinator/datastore/sqlite.scm
@@ -75,7 +75,7 @@
datastore-list-processed-builds
datastore-list-unprocessed-builds
datastore-find-first-unallocated-deferred-build
- datastore-fetch-build-ids-and-propagated-priorities-for-unprocessed-builds
+ datastore-fetch-prioritised-unprocessed-builds
datastore-insert-unprocessed-hook-event
datastore-count-unprocessed-hook-events
datastore-list-unprocessed-hook-events
@@ -2291,15 +2291,14 @@ LIMIT 1"
result)))))
-(define-method (datastore-fetch-build-ids-and-propagated-priorities-for-unprocessed-builds
- (datastore <sqlite-datastore>)
- created-after)
- (define (fetch-propagated-priorities-for-unprocessed-builds db)
+(define-method (datastore-fetch-prioritised-unprocessed-builds
+ (datastore <sqlite-datastore>))
+ (define (fetch-prioritised-unprocessed-builds db)
(let ((statement
(sqlite-prepare
db
"
-SELECT builds.uuid, derived_priority
+SELECT builds.uuid
FROM unprocessed_builds_with_derived_priorities
INNER JOIN builds ON build_id = builds.id
WHERE all_inputs_built = 1
@@ -2313,11 +2312,9 @@ WHERE all_inputs_built = 1
(let ((result (sqlite-fold
(lambda (row result)
- (match row
- (#(uuid derived-priority)
- (hash-set! result uuid derived-priority)))
- result)
- (make-hash-table 10000)
+ (cons (vector-ref row 0)
+ result))
+ '()
statement)))
(sqlite-reset statement)
@@ -2325,15 +2322,7 @@ WHERE all_inputs_built = 1
(call-with-worker-thread
(slot-ref datastore 'worker-reader-thread-channel)
- (lambda (db)
- (let* ((propagated-priorities
- (fetch-propagated-priorities-for-unprocessed-builds db))
- (unprocessed-build-ids
- (hash-map->list (lambda (key _) key)
- propagated-priorities)))
-
- (values propagated-priorities
- unprocessed-build-ids)))))
+ fetch-prioritised-unprocessed-builds))
(define-method (datastore-insert-unprocessed-hook-event
(datastore <sqlite-datastore>)