diff options
author | Christopher Baines <mail@cbaines.net> | 2025-02-16 12:44:17 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2025-02-16 12:44:17 +0000 |
commit | 9eed87b6e6a327275095c7e57542b4c84e4b11a5 (patch) | |
tree | 81d4114cddc1e1b963ad097b0867f8520effa728 | |
parent | eabd4e66853e977d10dadcc90f80b3fded26ec6e (diff) | |
download | build-coordinator-9eed87b6e6a327275095c7e57542b4c84e4b11a5.tar build-coordinator-9eed87b6e6a327275095c7e57542b4c84e4b11a5.tar.gz |
Support canceling builds by created_at
-rw-r--r-- | guix-build-coordinator/client-communication.scm | 16 | ||||
-rw-r--r-- | guix-build-coordinator/datastore.scm | 6 | ||||
-rw-r--r-- | guix-build-coordinator/datastore/sqlite.scm | 12 | ||||
-rw-r--r-- | scripts/guix-build-coordinator.in | 12 |
4 files changed, 45 insertions, 1 deletions
diff --git a/guix-build-coordinator/client-communication.scm b/guix-build-coordinator/client-communication.scm index 8c4d1fc..3254a9f 100644 --- a/guix-build-coordinator/client-communication.scm +++ b/guix-build-coordinator/client-communication.scm @@ -416,6 +416,14 @@ (or (and=> (assq-ref query-parameters 'priority_lt) string->number) 'unset) + #:created-at-> + (or (and=> (assq-ref query-parameters 'created_at_gt) + datastore-validate-datetime-string) + 'unset) + #:created-at-< + (or (and=> (assq-ref query-parameters 'created_at_lt) + datastore-validate-datetime-string) + 'unset) #:relationship (or (and=> (assq-ref query-parameters 'relationship) string->symbol) @@ -874,6 +882,8 @@ (canceled 'unset) (priority-> 'unset) (priority-< 'unset) + (created-at-> 'unset) + (created-at-< 'unset) (relationship 'unset) (after-id #f) (limit #f)) @@ -922,6 +932,12 @@ ,@(if (number? priority-<) (list (simple-format #f "priority_lt=~A" priority-<)) '()) + ,@(if (string? created-at->) + (list (simple-format #f "created_at_gt=~A" created-at->)) + '()) + ,@(if (string? created-at-<) + (list (simple-format #f "created_at_lt=~A" created-at-<)) + '()) ,@(if (and relationship (not (eq? 'unset relationship))) (list (simple-format #f "relationship=~A" relationship)) '()) diff --git a/guix-build-coordinator/datastore.scm b/guix-build-coordinator/datastore.scm index ac0d01b..ae65b7d 100644 --- a/guix-build-coordinator/datastore.scm +++ b/guix-build-coordinator/datastore.scm @@ -6,7 +6,8 @@ #:use-module (guix-build-coordinator datastore postgresql) #:duplicates (merge-generics) #:export (database-uri->datastore - datastore-find-build-output)) + datastore-find-build-output + datastore-validate-datetime-string)) (re-export datastore-optimize) (re-export datastore-spawn-fibers) @@ -123,3 +124,6 @@ (assq-ref output 'output) #f)) outputs))) + +(define (datastore-validate-datetime-string s) + (strftime "%F %T" (car (strptime "%F %T" s)))) diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm index ef66a2c..556f36f 100644 --- a/guix-build-coordinator/datastore/sqlite.scm +++ b/guix-build-coordinator/datastore/sqlite.scm @@ -2445,6 +2445,8 @@ WHERE uuid = :uuid" (canceled 'unset) (priority-> 'unset) (priority-< 'unset) + (created-at-> 'unset) + (created-at-< 'unset) (after-id #f) (limit #f) ;; other-builds-dependent or no-dependent-builds @@ -2529,6 +2531,8 @@ SELECT id FROM tags WHERE key = :key" (not (null? not-systems)) (not (eq? priority-> 'unset)) (not (eq? priority-< 'unset)) + (not (eq? created-at-> 'unset)) + (not (eq? created-at-< 'unset)) (not (eq? processed 'unset)) (not (eq? canceled 'unset)) (not (eq? relationship 'unset)) @@ -2579,6 +2583,14 @@ INNER JOIN derivations (list (simple-format #f "priority < ~A" priority-<)) '()) + (if (string? created-at->) + (list + (simple-format #f "created_at > '~A'" created-at->)) + '()) + (if (string? created-at-<) + (list + (simple-format #f "created_at < '~A'" created-at-<)) + '()) (cond ((eq? processed #t) '("processed = 1")) ((eq? processed #f) '("processed = 0")) diff --git a/scripts/guix-build-coordinator.in b/scripts/guix-build-coordinator.in index a35074f..0c06579 100644 --- a/scripts/guix-build-coordinator.in +++ b/scripts/guix-build-coordinator.in @@ -293,6 +293,16 @@ (or (assq-ref result 'not-systems) '())) (alist-delete 'not-systems result)))) + (option '("created-at-gt") #t #f + (lambda (opt name arg result) + (alist-cons 'created-at-> + (datastore-validate-datetime-string arg) + result))) + (option '("created-at-lt") #t #f + (lambda (opt name arg result) + (alist-cons 'created-at-< + (datastore-validate-datetime-string arg) + result))) (option '("skip-updating-derived-priorities") #f #f (lambda (opt name _ result) (alist-cons 'skip-updating-derived-priorities @@ -663,6 +673,8 @@ tags: #:not-tags (assq-ref opts 'not-tags) #:systems (assq-ref opts 'systems) #:not-systems (assq-ref opts 'not-systems) + #:created-at-< (assq-ref opts 'created-at-<) + #:created-at-> (assq-ref opts 'created-at->) #:processed #f #:canceled #f #:relationship (assq-ref opts 'relationship))) |