diff --git a/pkgs/racket-test-core/tests/racket/logger.rktl b/pkgs/racket-test-core/tests/racket/logger.rktl index 7c05835127..97c2f0a63d 100644 --- a/pkgs/racket-test-core/tests/racket/logger.rktl +++ b/pkgs/racket-test-core/tests/racket/logger.rktl @@ -334,6 +334,20 @@ (log-message logger 'error "hi") (test '#(error "hi" #f #f) sync m)) +; -------------------- +;; Regression test to make sure cache clearing is not broken: + +(let ([logger (make-logger)]) + (test #f log-level? logger 'debug 'test-a) + (test #f log-level? logger 'debug 'test-b) + (test #f log-level? logger 'debug 'test-c) + (define r2 (make-log-receiver logger 'debug 'test-b)) + (test #f log-level? logger 'debug 'test-a) + (test #t log-level? logger 'debug 'test-b) + (test #f log-level? logger 'debug 'test-c) + ;; Retain receiver + (test #f sync/timeout 0 r2)) + ; -------------------- (report-errs) diff --git a/racket/src/io/logger/wanted.rkt b/racket/src/io/logger/wanted.rkt index 406a6958fc..fe05aab3c3 100644 --- a/racket/src/io/logger/wanted.rkt +++ b/racket/src/io/logger/wanted.rkt @@ -48,7 +48,7 @@ (define (update-logger-wanted-level! logger topic) (unless ((logger-local-level-timestamp logger) . >= . (unbox (logger-root-level-timestamp-box logger))) (define cache (logger-topic-level-cache logger)) - (for/or ([i (in-range 0 (vector-length cache) 2)]) + (for ([i (in-range 0 (vector-length cache) 2)]) (vector-set! cache i #f)) (set-logger-local-level-timestamp! logger (unbox (logger-root-level-timestamp-box logger)))) ;; As we traverse the parent chain, keep track of the "ceiling"