@@ -82,10 +82,25 @@ limit)) full-list)))) (define (mt:get-prereqs-not-met run-id waitons ref-item-path #!key (mode 'normal)) (db:get-prereqs-not-met run-id waitons ref-item-path mode: mode)) + +(define (mt:lazy-get-prereqs-not-met run-id waitons ref-item-path #!key (mode 'normal)) + (let* ((key (list run-id waitons ref-item-path mode)) + (res (hash-table-ref/default *pre-reqs-met-cache* key #f)) + (useres (let ((last-time (if (vector? res) (vector-ref res 0) #f))) + (if last-time + (< (current-seconds)(+ last-time 5)) + #f)))) + (if useres + (let ((result (vector-ref res 1))) + (debug:print 4 "Using lazy value res: " result) + result) + (let ((newres (db:get-prereqs-not-met run-id waitons ref-item-path mode: mode))) + (hash-table-set! *pre-reqs-met-cache* key (vector (current-seconds) newres)) + newres)))) (define (mt:get-run-stats) (cdb:remote-run db:get-run-stats #f)) (define (mt:discard-blocked-tests run-id failed-test tests test-records)