From 04bc610b7e7a39016851d265541e1509883bf284 Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Wed, 23 Sep 2026 15:56:59 -0400 Subject: [PATCH] Look for the log-file baseline at most every ten minutes The front page finds the baseline by walking revisions' log trees until one holds at least 30000 files, and it caches only a successful answer. Until some revision reached the threshold, every render walked every revision's log tree again. Limit the search to once every ten minutes. --- render.rkt | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/render.rkt b/render.rkt index 4de8c82..3bd77e3 100644 --- a/render.rkt +++ b/render.rkt @@ -29,19 +29,24 @@ (if (file-exists? p) 1 0)) 0)) +;; Finding the baseline walks whole log trees. Until some revision reaches +;; the threshold, look again at most every ten minutes, not on every render. (define log-file-baseline #f) +(define log-file-baseline-checked -inf.0) (define (get-log-file-baseline) (or log-file-baseline - (let () - (define builds (plt-build-directory)) - (define revs - (sort (filter-map (compose string->number path->string) - (directory-list builds)) - >)) - (for/or ([rev (in-list revs)]) - (define c (count-log-files (revision-log-dir rev))) - (and (>= c 30000) - (begin (set! log-file-baseline c) c)))))) + (and ((current-seconds) . >= . (+ log-file-baseline-checked (* 10 60))) + (let () + (set! log-file-baseline-checked (current-seconds)) + (define builds (plt-build-directory)) + (define revs + (sort (filter-map (compose string->number path->string) + (directory-list builds)) + >)) + (for/or ([rev (in-list revs)]) + (define c (count-log-files (revision-log-dir rev))) + (and (>= c 30000) + (begin (set! log-file-baseline c) c))))))) (define (base-path pth) (define rev (current-rev))