You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by il...@apache.org on 2018/07/12 05:54:59 UTC

[incubator-dubbo] branch master updated: bugfix init reference dead lock (#2053)

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

iluo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git


The following commit(s) were added to refs/heads/master by this push:
     new bea020f  bugfix init reference dead lock  (#2053)
bea020f is described below

commit bea020f801cc353a183fb09aaf5d039df91d49dd
Author: yunxiyi <yu...@outlook.com>
AuthorDate: Thu Jul 12 13:54:53 2018 +0800

    bugfix init reference dead lock  (#2053)
    
    * bugfix init reference dead lock
    
    * add test
    
    * bugfix init reference dead lock #2053
    
    * remove not reference package
---
 .../dubbo/config/spring/extension/SpringExtensionFactory.java | 11 ++++++++---
 .../config/spring/extension/SpringExtensionFactoryTest.java   |  7 +++++++
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java
index 9490bb3..11dd6a6 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java
@@ -16,17 +16,16 @@
  */
 package org.apache.dubbo.config.spring.extension;
 
+import java.util.Set;
 import org.apache.dubbo.common.extension.ExtensionFactory;
+import org.apache.dubbo.common.extension.SPI;
 import org.apache.dubbo.common.logger.Logger;
 import org.apache.dubbo.common.logger.LoggerFactory;
 import org.apache.dubbo.common.utils.ConcurrentHashSet;
-
 import org.springframework.beans.factory.NoSuchBeanDefinitionException;
 import org.springframework.beans.factory.NoUniqueBeanDefinitionException;
 import org.springframework.context.ApplicationContext;
 
-import java.util.Set;
-
 /**
  * SpringExtensionFactory
  */
@@ -51,6 +50,12 @@ public class SpringExtensionFactory implements ExtensionFactory {
     @Override
     @SuppressWarnings("unchecked")
     public <T> T getExtension(Class<T> type, String name) {
+
+        //SPI should be get from SpiExtensionFactory
+        if (type.isInterface() && type.isAnnotationPresent(SPI.class)) {
+            return null;
+        }
+
         for (ApplicationContext context : contexts) {
             if (context.containsBean(name)) {
                 Object bean = context.getBean(name);
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactoryTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactoryTest.java
index 73ca2eb..134b50b 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactoryTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactoryTest.java
@@ -21,6 +21,7 @@ import org.apache.dubbo.config.spring.api.HelloService;
 import org.apache.dubbo.config.spring.impl.DemoServiceImpl;
 import org.apache.dubbo.config.spring.impl.HelloServiceImpl;
 
+import org.apache.dubbo.rpc.Protocol;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -50,6 +51,12 @@ public class SpringExtensionFactoryTest {
     }
 
     @Test
+    public void testGetExtensionBySPI() {
+        Protocol protocol = springExtensionFactory.getExtension(Protocol.class, "protocol");
+        Assert.assertNull(protocol);
+    }
+
+    @Test
     public void testGetExtensionByName() {
         DemoService bean = springExtensionFactory.getExtension(DemoService.class, "bean1");
         Assert.assertNotNull(bean);