From d7304aa27fc9dd21b138759623bc060538bd8cf0 Mon Sep 17 00:00:00 2001 From: Albumen Kevin Date: Mon, 2 Sep 2024 18:36:05 +0800 Subject: [PATCH] Fix LRUCache.putIfAbsent concurrent issue --- .../java/org/apache/dubbo/common/utils/LRUCache.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/LRUCache.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/LRUCache.java index 76d6c19cb71..28440ba854d 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/LRUCache.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/LRUCache.java @@ -110,6 +110,16 @@ public void clear() { } } + @Override + public V putIfAbsent(K key, V value) { + lock.lock(); + try { + return super.putIfAbsent(key, value); + } finally { + lock.unlock(); + } + } + public void lock() { lock.lock(); }