Skip to content

Commit 1f64956

Browse files
committed
Prevent errors when accessing the cache concurrently
1 parent c4a574a commit 1f64956

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

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

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,11 @@ public Object getObject(Object key) {
7272
if (result == null) {
7373
delegate.removeObject(key);
7474
} else {
75-
hardLinksToAvoidGarbageCollection.addFirst(result);
76-
if (hardLinksToAvoidGarbageCollection.size() > numberOfHardLinks) {
77-
hardLinksToAvoidGarbageCollection.removeLast();
75+
synchronized (hardLinksToAvoidGarbageCollection) {
76+
hardLinksToAvoidGarbageCollection.addFirst(result);
77+
if (hardLinksToAvoidGarbageCollection.size() > numberOfHardLinks) {
78+
hardLinksToAvoidGarbageCollection.removeLast();
79+
}
7880
}
7981
}
8082
}
@@ -89,7 +91,9 @@ public Object removeObject(Object key) {
8991

9092
@Override
9193
public void clear() {
92-
hardLinksToAvoidGarbageCollection.clear();
94+
synchronized (hardLinksToAvoidGarbageCollection) {
95+
hardLinksToAvoidGarbageCollection.clear();
96+
}
9397
removeGarbageCollectedItems();
9498
delegate.clear();
9599
}

0 commit comments

Comments
 (0)