You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2022/05/07 08:11:32 UTC

[dubbo] branch 3.0 updated: Fix #9829, SimpleReferenceCache bug to cause genericInvoke high lantency (#10010)

This is an automated email from the ASF dual-hosted git repository.

liujun pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.0 by this push:
     new 06618160e7 Fix #9829, SimpleReferenceCache bug to cause genericInvoke high lantency (#10010)
06618160e7 is described below

commit 06618160e76e134182a920d84a6b7234fe0350fd
Author: ken.lj <ke...@gmail.com>
AuthorDate: Sat May 7 16:10:55 2022 +0800

    Fix #9829, SimpleReferenceCache bug to cause genericInvoke high lantency (#10010)
---
 .../java/org/apache/dubbo/config/utils/SimpleReferenceCache.java    | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/SimpleReferenceCache.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/SimpleReferenceCache.java
index 3e704457c5..893799719c 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/SimpleReferenceCache.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/SimpleReferenceCache.java
@@ -107,14 +107,12 @@ public class SimpleReferenceCache implements ReferenceCache {
     public <T> T get(ReferenceConfigBase<T> rc) {
         String key = generator.generateKey(rc);
         Class<?> type = rc.getInterfaceClass();
-        Object proxy = rc.get();
-
-        references.computeIfAbsent(rc, _rc -> {
+        Object proxy = references.computeIfAbsent(rc, _rc -> {
             List<ReferenceConfigBase<?>> referencesOfType = referenceTypeMap.computeIfAbsent(type, _t -> Collections.synchronizedList(new ArrayList<>()));
             referencesOfType.add(rc);
             List<ReferenceConfigBase<?>> referenceConfigList = referenceKeyMap.computeIfAbsent(key, _k -> Collections.synchronizedList(new ArrayList<>()));
             referenceConfigList.add(rc);
-            return proxy;
+            return _rc.get();
         });
 
         return (T) proxy;