aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/datastore
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-10-29 20:04:03 +0000
committerChristopher Baines <mail@cbaines.net>2020-10-29 20:04:03 +0000
commit71e6fbb9631fcdd7246615f1dc61c9153dbe1f98 (patch)
treeff9bc33b2b485ebce77385ed26c5cf61096b0f87 /guix-build-coordinator/datastore
parentf2851f57502b15dee9c94daf3876b53a6be01849 (diff)
downloadbuild-coordinator-71e6fbb9631fcdd7246615f1dc61c9153dbe1f98.tar
build-coordinator-71e6fbb9631fcdd7246615f1dc61c9153dbe1f98.tar.gz
Only consider builds created in the last two weeks
For the derivation ordered allocator. This is an quick alternative for having some kind of archival mechanism for builds. It should reduce the time it takes the allocator to run.
Diffstat (limited to 'guix-build-coordinator/datastore')
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm30
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