diff options
author | Christopher Baines <mail@cbaines.net> | 2022-01-23 13:13:08 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2022-01-31 18:20:14 +0000 |
commit | d731ea11a83802a6dec00a9586ba8015802ee6a1 (patch) | |
tree | b172d554926e4701fd187df5bb6ed21d3e89ce10 /guix-build-coordinator/datastore/sqlite.scm | |
parent | 6b5a1487af61b2ecd59778713162a2982295728e (diff) | |
download | build-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/sqlite.scm')
-rw-r--r-- | guix-build-coordinator/datastore/sqlite.scm | 29 |
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>) |