From 1321798793ec3c09366c32468d8c46ffc65cd92e Mon Sep 17 00:00:00 2001 From: Sanjay Dutt Date: Fri, 23 Oct 2026 19:37:16 +0530 Subject: [PATCH] Assert eviction count, not victim, in cache testSimple TestCaffeineCache.testSimple and TestThinCache.testSimple asserted that key 1 is evicted after 101 puts into a cache of size 100. Which entry is evicted is up to Caffeine's eviction policy, not insertion order, and it changed in Caffeine 3.3.0: both tests now fail on every branch_9x run. Assert that exactly one entry was evicted instead, and drop the get(1) lookup from the cumulative lookup count. TestThinCache also warms the second cache into the shared backing cache while it is still full. On Caffeine 3.3.0 the warmed entries lose to the existing ones and are evicted, so enlarge the backing before warming (the same change as SOLR-18506 / #5029). --- .../test/org/apache/solr/search/TestCaffeineCache.java | 7 ++++--- .../src/test/org/apache/solr/search/TestThinCache.java | 9 +++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/solr/core/src/test/org/apache/solr/search/TestCaffeineCache.java b/solr/core/src/test/org/apache/solr/search/TestCaffeineCache.java index b4c69600fbd5..13f8a30153e3 100644 --- a/solr/core/src/test/org/apache/solr/search/TestCaffeineCache.java +++ b/solr/core/src/test/org/apache/solr/search/TestCaffeineCache.java @@ -70,8 +70,9 @@ public void testSimple() { assertEquals(3L, nl.get("lookups")); assertEquals(2L, nl.get("hits")); assertEquals(101L, nl.get("inserts")); - - assertNull(lfuCache.get(1)); // first item put in should be the first out + // Exactly one entry is evicted; which one is up to Caffeine's eviction policy. + assertEquals(100, lfuCache.size()); + assertEquals(1L, nl.get("evictions")); // Test autowarming newLFUCache.init(params, initObj, regenerator); @@ -88,7 +89,7 @@ public void testSimple() { assertEquals(1L, nl.get("inserts")); assertEquals(0L, nl.get("evictions")); - assertEquals(7L, nl.get("cumulative_lookups")); + assertEquals(6L, nl.get("cumulative_lookups")); assertEquals(4L, nl.get("cumulative_hits")); assertEquals(102L, nl.get("cumulative_inserts")); } diff --git a/solr/core/src/test/org/apache/solr/search/TestThinCache.java b/solr/core/src/test/org/apache/solr/search/TestThinCache.java index 6de790500ee6..8b0bd3394312 100644 --- a/solr/core/src/test/org/apache/solr/search/TestThinCache.java +++ b/solr/core/src/test/org/apache/solr/search/TestThinCache.java @@ -127,7 +127,12 @@ public void testSimple() { assertEquals(2L, nl.get("hits")); assertEquals(101L, nl.get("inserts")); - assertNull(lfuCache.get(1)); // first item put in should be the first out + // Exactly one entry is evicted; which one is up to Caffeine's eviction policy. + // lfuCache isn't registered for removals here, so check the backing cache's size. + assertEquals(100, backing.size()); + + // The backing is full; make room so warming doesn't evict the new cache's own entries. + backing.setMaxSize(200); // Test autowarming newLFUCache.init(Collections.singletonMap("autowarmCount", "25"), initObj, regenerator); @@ -144,7 +149,7 @@ public void testSimple() { assertEquals(1L, nl.get("inserts")); assertEquals(0L, nl.get("evictions")); - assertEquals(7L, nl.get("cumulative_lookups")); + assertEquals(6L, nl.get("cumulative_lookups")); assertEquals(4L, nl.get("cumulative_hits")); assertEquals(102L, nl.get("cumulative_inserts")); }