diff --git a/src/cuirass/metrics.scm b/src/cuirass/metrics.scm index fa42e430f231b4e7e5e23195a71023cfba0098fc..f244c01eaa604b62b209ea2f925cf5873fa1aadd 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))) - - ;; 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) - - ;; 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) - - ;; 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)) + (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;") + + (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) + + (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) + + (sqlite-exec db "COMMIT;"))))