aboutsummaryrefslogtreecommitdiff
path: root/guix-qa-frontpage/server.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2023-05-06 11:36:05 +0100
committerChristopher Baines <mail@cbaines.net>2023-05-06 11:36:05 +0100
commit51fb0d63eed55a27da0f0088f63f6a7360cc8b03 (patch)
tree1abb7031d000c83d7b6d82801113f0f1a0d4a115 /guix-qa-frontpage/server.scm
parent083420e110e91bcc818f4e0a26d9d2900d4c665d (diff)
downloadqa-frontpage-51fb0d63eed55a27da0f0088f63f6a7360cc8b03.tar
qa-frontpage-51fb0d63eed55a27da0f0088f63f6a7360cc8b03.tar.gz
Instrument the substitute availability of branches
So that it's possible to get an idea of how this changes over time.
Diffstat (limited to 'guix-qa-frontpage/server.scm')
-rw-r--r--guix-qa-frontpage/server.scm86
1 files changed, 72 insertions, 14 deletions
diff --git a/guix-qa-frontpage/server.scm b/guix-qa-frontpage/server.scm
index d983205..b1bc946 100644
--- a/guix-qa-frontpage/server.scm
+++ b/guix-qa-frontpage/server.scm
@@ -610,10 +610,56 @@ port. Also, the port used can be changed by passing the --port option.\n"
(sleep
(- frequency time-taken)))))))))
-(define (start-refresh-non-patch-branches-data-thread database)
+(define (start-refresh-non-patch-branches-data-thread database
+ metrics-registry)
(define frequency
(* 30 60))
+ (define branch-substitutes-known
+ (make-gauge-metric metrics-registry
+ "branch_substitutes_known"
+ #:labels '(server branch system target)))
+
+ (define branch-substitutes-unknown
+ (make-gauge-metric metrics-registry
+ "branch_substitutes_unknown"
+ #:labels '(server branch system target)))
+
+ (define (update-branch-substitute-availability-metrics
+ branch-name
+ substitute-availability)
+ (for-each
+ (lambda (server-details)
+ (let ((server-url
+ (assoc-ref
+ (assoc-ref server-details "server")
+ "url")))
+
+ (for-each
+ (lambda (system-and-target-details)
+ (let ((label-values
+ `((server . ,server-url)
+ (branch . ,branch-name)
+ (system
+ . ,(assoc-ref system-and-target-details
+ "system"))
+ (target
+ . ,(assoc-ref system-and-target-details
+ "target")))))
+
+ (metric-set branch-substitutes-known
+ (assoc-ref system-and-target-details
+ "known")
+ #:label-values label-values)
+ (metric-set branch-substitutes-unknown
+ (assoc-ref system-and-target-details
+ "unknown")
+ #:label-values label-values)))
+ (vector->list
+ (assoc-ref server-details "availability")))))
+ (vector->list
+ substitute-availability)))
+
(define (refresh-data)
(simple-format (current-error-port)
"refreshing non-patch branches data...\n")
@@ -653,22 +699,34 @@ port. Also, the port used can be changed by passing the --port option.\n"
#f)
(lambda ()
- (with-sqlite-cache
- database
- 'branch-data
- branch-data
- #:args
- (list branch-name)
- #:ttl (/ frequency 2))))
- #:unwind? #t)
+ (let ((change-details
+ derivation-change-counts
+ substitute-availability
+ (with-sqlite-cache
+ database
+ 'branch-data
+ branch-data
+ #:args
+ (list branch-name)
+ #:ttl (/ frequency 2))))
+
+ (update-branch-substitute-availability-metrics
+ branch-name
+ substitute-availability)))
+ #:unwind? #t))
#t)
branches))
- (with-sqlite-cache
- database
- 'master-branch-data
- master-branch-data
- #:ttl 0))
+ (let ((master-branch-substitute-availability
+ (with-sqlite-cache
+ database
+ 'master-branch-data
+ master-branch-data
+ #:ttl 0)))
+
+ (update-branch-substitute-availability-metrics
+ "master"
+ master-branch-substitute-availability)))
(call-with-new-thread
(lambda ()