Skip to content

Commit 512a216

Browse files
authored
Merge pull request #2960 from oah1021/fix-remove-keymap-issue
Fixed the removeObject method key-value pair removal issue
2 parents b444fda + 40e86ab commit 512a216

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

src/main/java/org/apache/ibatis/cache/decorators/LruCache.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ public Object getObject(Object key) {
7575

7676
@Override
7777
public Object removeObject(Object key) {
78+
keyMap.remove(key);
7879
return delegate.removeObject(key);
7980
}
8081

src/test/java/org/apache/ibatis/cache/LruCacheTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
import org.apache.ibatis.cache.impl.PerpetualCache;
2424
import org.junit.jupiter.api.Test;
2525

26+
import java.lang.reflect.Field;
27+
import java.util.Map;
28+
2629
class LruCacheTest {
2730

2831
@Test
@@ -60,4 +63,18 @@ void shouldFlushAllItemsOnDemand() {
6063
assertNull(cache.getObject(4));
6164
}
6265

66+
@Test
67+
void shouldCacheSizeEqualsKeyMapSize() throws Exception {
68+
LruCache cache = new LruCache(new PerpetualCache("default"));
69+
cache.setSize(5);
70+
for (int i = 0; i < 5; i++) {
71+
cache.putObject(i, i);
72+
}
73+
cache.removeObject(1);
74+
Field keyMap = cache.getClass().getDeclaredField("keyMap");
75+
keyMap.setAccessible(true);
76+
Map<Object, Object> map = (Map<Object, Object>) keyMap.get(cache);
77+
assertEquals(map.size(), cache.getSize());
78+
}
79+
6380
}

0 commit comments

Comments
 (0)