From ec38418d6d3eb4342363af1714f0073a74d52fbc Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sun, 28 Jun 2026 03:53:24 -0400 Subject: fix: always evict at least one cache entry when over max wttrin--cleanup-cache-if-needed removed floor(count * 0.20) entries, which is 0 for a small cache (e.g. two entries at max one), so the cache could sit over its advertised maximum indefinitely. It now removes at least one whenever it is over. --- tests/test-wttrin--cleanup-cache-if-needed.el | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'tests') diff --git a/tests/test-wttrin--cleanup-cache-if-needed.el b/tests/test-wttrin--cleanup-cache-if-needed.el index 1850d17..7533bfa 100644 --- a/tests/test-wttrin--cleanup-cache-if-needed.el +++ b/tests/test-wttrin--cleanup-cache-if-needed.el @@ -108,16 +108,17 @@ (should (= 1 (testutil-wttrin-cache-size)))) (test-wttrin--cleanup-cache-if-needed-teardown))) -(ert-deftest test-wttrin--cleanup-cache-if-needed-boundary-two-entries-at-max-one-removes-none () - "Test that two entries at max=1 removes no entries due to integer division." +(ert-deftest test-wttrin--cleanup-cache-if-needed-boundary-two-entries-at-max-one-reduces-to-max () + "Boundary: two entries at max=1 reduces to the max. +floor(2 * 0.20) is 0, but cleanup must still remove at least one entry when the +cache is over max, or it would exceed its advertised maximum indefinitely." (test-wttrin--cleanup-cache-if-needed-setup) (unwind-protect (testutil-wttrin-with-cache-max 1 (testutil-wttrin-add-to-cache "old" "data1" 100) (testutil-wttrin-add-to-cache "new" "data2" 50) (wttrin--cleanup-cache-if-needed) - ;; 2 entries / 5 = 0 in integer division, so no entries removed - (should (= 2 (testutil-wttrin-cache-size)))) + (should (= 1 (testutil-wttrin-cache-size)))) (test-wttrin--cleanup-cache-if-needed-teardown))) (ert-deftest test-wttrin--cleanup-cache-if-needed-boundary-one-over-max-removes-oldest () -- cgit v1.2.3