diff options
Diffstat (limited to 'guix-build-coordinator/datastore')
-rw-r--r-- | guix-build-coordinator/datastore/sqlite.scm | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm index 69a8931..0f3e5df 100644 --- a/guix-build-coordinator/datastore/sqlite.scm +++ b/guix-build-coordinator/datastore/sqlite.scm @@ -1178,17 +1178,26 @@ ORDER BY priority DESC"))) builds))))) (define-method (datastore-list-unprocessed-builds-with-built-inputs - (datastore <sqlite-datastore>)) + (datastore <sqlite-datastore>) + created-after) (call-with-worker-thread (slot-ref datastore 'worker-reader-thread-channel) (lambda (db) (let ((statement (sqlite-prepare db - " + (string-append + " SELECT uuid FROM builds WHERE processed = 0 +" + (if created-after + (simple-format + #f "AND created_at >= ~A\n" + created-after) + "") + " EXCEPT SELECT uuid FROM builds @@ -1210,7 +1219,7 @@ EXCEPT ) EXCEPT SELECT build_id FROM allocated_builds -"))) +")))) (let ((builds (sqlite-map (match-lambda (#(uuid) uuid)) @@ -1220,20 +1229,29 @@ EXCEPT builds))))) (define-method (datastore-fetch-unprocessed-builds-with-propagated-priorities - (datastore <sqlite-datastore>)) + (datastore <sqlite-datastore>) + created-after) (call-with-worker-thread (slot-ref datastore 'worker-reader-thread-channel) (lambda (db) (let ((statement (sqlite-prepare db - " + (string-append + " WITH RECURSIVE builds_with_derived_priority( uuid, derivation_name, derived_priority ) AS ( SELECT builds.uuid, builds.derivation_name, builds.priority FROM builds WHERE processed = 0 +" + (if created-after + (simple-format + #f "AND created_at >= ~A\n" + created-after) + "") + " UNION SELECT builds.uuid, builds.derivation_name, max(builds.priority, builds_with_derived_priority.derived_priority) @@ -1253,7 +1271,7 @@ SELECT builds_with_derived_priority.uuid, MAX(derived_priority) FROM builds_with_derived_priority INNER JOIN builds ON builds.uuid = builds_with_derived_priority.uuid WHERE builds.processed = 0 -GROUP BY builds_with_derived_priority.uuid" +GROUP BY builds_with_derived_priority.uuid") #:cache? #t))) (let ((result (sqlite-fold |