aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMathieu Othacehe <othacehe@gnu.org>2020-10-08 19:41:09 +0200
committerMathieu Othacehe <othacehe@gnu.org>2020-10-14 13:56:44 +0200
commit514f20a9b53ea575078ab9a413d38646bb48aa0b (patch)
tree7336da9f1374927b5d76dd1967d6910957a36eb6 /src
parent038150a3d0f89696726c540b359c0b2317a7a740 (diff)
downloadcuirass-514f20a9b53ea575078ab9a413d38646bb48aa0b.tar
cuirass-514f20a9b53ea575078ab9a413d38646bb48aa0b.tar.gz
Update metrics in a single transaction.
* src/cuirass/metrics.scm (db-update-metrics): Update all metrics in a single transaction.
Diffstat (limited to 'src')
-rw-r--r--src/cuirass/metrics.scm68
1 files changed, 35 insertions, 33 deletions
diff --git a/src/cuirass/metrics.scm b/src/cuirass/metrics.scm
index fa42e43..f244c01 100644
--- a/src/cuirass/metrics.scm
+++ b/src/cuirass/metrics.scm
@@ -328,41 +328,43 @@ timestamp) VALUES ("
(define (db-update-metrics)
"Compute and update all available metrics in database."
- (define specifications
- (map (cut assq-ref <> #:name) (db-get-specifications)))
+ (with-db-worker-thread db
+ ;; We can not update all evaluations metrics for performance reasons.
+ ;; Limit to the evaluations that were added during the past three days.
+ (let ((specifications
+ (map (cut assq-ref <> #:name) (db-get-specifications)))
+ (evaluations (db-latest-evaluations)))
+ (sqlite-exec db "BEGIN TRANSACTION;")
- ;; We can not update all evaluations metrics for performance reasons. Limit
- ;; to the evaluations that were added during the past three days.
- (define evaluations
- (db-latest-evaluations))
+ (db-update-metric 'builds-per-day)
+ (db-update-metric 'new-derivations-per-day)
+ (db-update-metric 'pending-builds)
- (db-update-metric 'builds-per-day)
- (db-update-metric 'new-derivations-per-day)
- (db-update-metric 'pending-builds)
+ ;; Update specification related metrics.
+ (for-each (lambda (spec)
+ (db-update-metric
+ 'average-10-last-eval-duration-per-spec spec)
+ (db-update-metric
+ 'average-100-last-eval-duration-per-spec spec)
+ (db-update-metric
+ 'average-eval-duration-per-spec spec)
- ;; Update specification related metrics.
- (for-each (lambda (spec)
- (db-update-metric
- 'average-10-last-eval-duration-per-spec spec)
- (db-update-metric
- 'average-100-last-eval-duration-per-spec spec)
- (db-update-metric
- 'average-eval-duration-per-spec spec)
+ (db-update-metric
+ 'percentage-failure-10-last-eval-per-spec spec)
+ (db-update-metric
+ 'percentage-failure-100-last-eval-per-spec spec)
+ (db-update-metric
+ 'percentage-failed-eval-per-spec spec))
+ specifications)
- (db-update-metric
- 'percentage-failure-10-last-eval-per-spec spec)
- (db-update-metric
- 'percentage-failure-100-last-eval-per-spec spec)
- (db-update-metric
- 'percentage-failed-eval-per-spec spec))
- specifications)
+ ;; Update evaluation related metrics.
+ (for-each (lambda (evaluation)
+ (db-update-metric
+ 'average-eval-build-start-time evaluation)
+ (db-update-metric
+ 'average-eval-build-complete-time evaluation)
+ (db-update-metric
+ 'evaluation-completion-speed evaluation))
+ evaluations)
- ;; Update evaluation related metrics.
- (for-each (lambda (evaluation)
- (db-update-metric
- 'average-eval-build-start-time evaluation)
- (db-update-metric
- 'average-eval-build-complete-time evaluation)
- (db-update-metric
- 'evaluation-completion-speed evaluation))
- evaluations))
+ (sqlite-exec db "COMMIT;"))))