You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2023/07/14 05:52:14 UTC

[dubbo] branch 3.2 updated: Check if initialized for ReferenceBean (#12723)

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

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


The following commit(s) were added to refs/heads/3.2 by this push:
     new e322b17301 Check if initialized for ReferenceBean (#12723)
e322b17301 is described below

commit e322b1730127ed8cce3ea8cba2794bb6082fdc53
Author: Albumen Kevin <jh...@gmail.com>
AuthorDate: Fri Jul 14 13:52:07 2023 +0800

    Check if initialized for ReferenceBean (#12723)
    
    * Check if initialized for ReferenceBean
    
    * fix name
---
 .../main/java/org/apache/dubbo/config/ReferenceConfig.java  | 13 ++++++++++++-
 .../java/org/apache/dubbo/config/spring/ReferenceBean.java  |  3 +++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
index e8da1c28d4..761fc3224e 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
@@ -57,12 +57,12 @@ import org.apache.dubbo.rpc.support.ProtocolUtils;
 import java.beans.Transient;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.TreeSet;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
+import java.util.TreeSet;
 
 import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;
 import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;
@@ -796,6 +796,17 @@ public class ReferenceConfig<T> extends ReferenceConfigBase<T> {
         configPostProcessors.forEach(component -> component.postProcessReferConfig(this));
     }
 
+    /**
+     * Return if ReferenceConfig has been initialized
+     * Note: Cannot use `isInitilized` as it may be treated as a Java Bean property
+     *
+     * @return initialized
+     */
+    @Transient
+    public boolean configInitialized() {
+        return initialized;
+    }
+
     /**
      * just for test
      *
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
index 975df8a2b2..e483455d03 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
@@ -393,6 +393,9 @@ public class ReferenceBean<T> implements FactoryBean<T>,
         //Subclasses should synchronize on the given Object if they perform any sort of extended singleton creation phase.
         // In particular, subclasses should not have their own mutexes involved in singleton creation, to avoid the potential for deadlocks in lazy-init situations.
         //The redundant type cast is to be compatible with earlier than spring-4.2
+        if (referenceConfig.configInitialized()) {
+            return referenceConfig.get();
+        }
         synchronized (((DefaultSingletonBeanRegistry)getBeanFactory()).getSingletonMutex()) {
             return referenceConfig.get();
         }