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 2018/11/01 07:20:14 UTC

[incubator-dubbo] 05/06: Merge url part from cvictory and fix configuration override problems

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

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

commit 65450f5b8fda19b4b807adc06f59e4ffbc344f0d
Merge: 80f9091 91f1ce8
Author: ken.lj <ke...@gmail.com>
AuthorDate: Thu Nov 1 15:18:28 2018 +0800

    Merge url part from cvictory and fix configuration override problems

 dubbo-bom/pom.xml                                  |   5 +
 .../org/apache/dubbo/rpc/cluster/RouterChain.java  |  15 +-
 .../java/org/apache/dubbo/common/Constants.java    |  28 ++-
 .../dubbo/config/AbstractInterfaceConfig.java      |  89 ++++---
 ...eStoreConfig.java => MetadataReportConfig.java} |  39 +++-
 .../org/apache/dubbo/config/ReferenceConfig.java   |   5 +-
 .../org/apache/dubbo/config/RegistryConfig.java    |  17 --
 .../apache/dubbo/config/RegistryDataConfig.java    |  89 +++++++
 .../org/apache/dubbo/config/ServiceConfig.java     |   7 +-
 .../apache/dubbo/config/spring/ReferenceBean.java  |  14 +-
 .../apache/dubbo/config/spring/ServiceBean.java    |  14 +-
 .../spring/schema/DubboNamespaceHandler.java       |   2 -
 .../src/main/resources/META-INF/compat/dubbo.xsd   |  16 +-
 .../src/main/resources/META-INF/dubbo.xsd          |  12 +-
 .../META-INF/spring/dubbo-demo-consumer.xml        |   2 +-
 dubbo-dependencies-bom/pom.xml                     |   6 +
 .../{ => dubbo-metadata-definition}/pom.xml        |  21 +-
 .../definition/ServiceDefinitionBuilder.java       | 106 +++++++++
 .../metadata/definition/TypeDefinitionBuilder.java |  79 +++++++
 .../definition/builder/ArrayTypeBuilder.java       |  54 +++++
 .../definition/builder/CollectionTypeBuilder.java  |  79 +++++++
 .../definition/builder/DefaultTypeBuilder.java     |  70 ++++++
 .../definition/builder/EnumTypeBuilder.java        |  63 +++++
 .../definition/builder/MapTypeBuilder.java         |  77 ++++++
 .../metadata/definition/builder/TypeBuilder.java}  |  26 ++-
 .../definition/model/FullServiceDefinition.java}   |  22 +-
 .../definition/model/MethodDefinition.java         |  74 ++++++
 .../definition/model/ServiceDefinition.java        |  80 +++++++
 .../metadata/definition/model/TypeDefinition.java  | 106 +++++++++
 .../dubbo/metadata/definition/util/ClassUtils.java | 112 +++++++++
 .../definition/util/JaketConfigurationUtils.java   | 100 ++++++++
 .../dubbo/metadata/definition/MetadataTest.java    | 153 ++++++++++++
 .../dubbo/metadata/definition/MetadataUtils.java   |  75 ++++++
 .../definition/common/ClassExtendsMap.java}        |  21 +-
 .../metadata/definition/common/ColorEnum.java}     |  14 +-
 .../metadata/definition/common/OuterClass.java}    |  28 ++-
 .../common/ResultWithRawCollections.java}          |  38 ++-
 .../metadata/definition/common/TestService.java}   |  42 +++-
 .../dubbo-metadata-report-api/pom.xml              |   9 +
 .../identifier/ConsumerMetadataIdentifier.java     |  31 +++
 .../metadata/identifier/MetadataIdentifier.java    |  85 +++++++
 .../identifier/ProviderMetadataIdentifier.java     |  17 ++
 .../integration/MetadataReportService.java         |  89 +++----
 .../dubbo/metadata/store/MetadataReport.java       |  25 +-
 .../metadata/store/MetadataReportFactory.java      |   4 +-
 .../metadata/support/AbstractMetadataReport.java   | 231 ++++++++++++------
 .../support/AbstractMetadataReportFactory.java     |  20 +-
 .../integration/MetadataReportServiceTest.java     |  75 ++----
 .../metadata/integration/RetryTestService.java     |  11 +
 .../store/test/JTestMetadataReport4Test.java       |  22 +-
 .../test/JTestMetadataReportFactory4Test.java      |   2 +-
 .../support/AbstractMetadataReportFactoryTest.java |  43 ++--
 .../support/AbstractMetadataReportTest.java        | 258 +++++++++++++++++----
 .../metadata/store/redis/RedisMetadataReport.java  |  29 ++-
 .../store/redis/RedisMetadataReportFactory.java    |   2 +-
 .../store/redis/RedisMetadata4TstService.java      |  12 +
 .../store/redis/RedisMetadataReportTest.java       | 111 +++++----
 .../store/zookeeper/ZookeeperMetadataReport.java   |  79 ++-----
 .../zookeeper/ZookeeperMetadataReportFactory.java  |   2 +-
 .../ZookeeperMetadataReport4TstService.java        |  11 +
 .../zookeeper/ZookeeperMetadataReportTest.java     | 209 ++++++-----------
 dubbo-metadata-report/pom.xml                      |   1 +
 .../registry/integration/RegistryProtocol.java     |   9 +-
 63 files changed, 2435 insertions(+), 752 deletions(-)

diff --cc dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RouterChain.java
index aaac226,aaac226..0826ad9
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RouterChain.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RouterChain.java
@@@ -26,10 -26,10 +26,10 @@@ import org.apache.dubbo.rpc.RpcInvocati
  import org.apache.dubbo.rpc.cluster.router.InvokerTreeCache;
  import org.apache.dubbo.rpc.cluster.router.TreeNode;
  
--import java.util.ArrayList;
  import java.util.Collections;
  import java.util.List;
  import java.util.Map;
++import java.util.concurrent.CopyOnWriteArrayList;
  import java.util.stream.Collectors;
  
  /**
@@@ -45,7 -45,7 +45,7 @@@ public class RouterChain<T> 
      // it's aimed to improve performance, only routers explicitly specifies 'runtime=true' will be executed when an RPC comes.
      private InvokerTreeCache<T> treeCache;
      // containing all routers, reconstruct every time 'route://' urls change.
--    private List<Router> routers;
++    private List<Router> routers = new CopyOnWriteArrayList<>();
      // Fixed router instances: ConfigConditionRouter, TagRouter, e.g., the rule for each instance may change but the instance will never delete or recreate.
      private List<Router> residentRouters;
  
@@@ -63,12 -63,12 +63,11 @@@
      }
  
      protected RouterChain(List<Router> routers) {
--        this.routers = routers;
++        this.routers.addAll(routers);
          treeCache = new InvokerTreeCache<>();
      }
  
      protected RouterChain(URL url) {
--        this.routers = new ArrayList<>();
          treeCache = new InvokerTreeCache<>();
          this.url = url;
      }
@@@ -92,9 -92,9 +91,11 @@@
       * @param generatedRouters
       */
      public void setGeneratedRouters(List<Router> generatedRouters) {
--        this.routers = new ArrayList<>();
--        this.routers.addAll(residentRouters);
--        this.routers.addAll(generatedRouters);
++        List<Router> newRouters = new CopyOnWriteArrayList<>();
++        newRouters.addAll(residentRouters);
++        newRouters.addAll(generatedRouters);
++        this.routers = newRouters;
++        // FIXME will sort cause concurrent problem? since it's kind of a write operation.
          this.sort();
          if (fullMethodInvokers != null) {
              this.preRoute(fullMethodInvokers, url, null);
diff --cc dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/DubboNamespaceHandler.java
index 559ec6b,e765e2d..df0415b
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/DubboNamespaceHandler.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/DubboNamespaceHandler.java
@@@ -24,8 -25,6 +24,7 @@@ import org.apache.dubbo.config.MonitorC
  import org.apache.dubbo.config.ProtocolConfig;
  import org.apache.dubbo.config.ProviderConfig;
  import org.apache.dubbo.config.RegistryConfig;
- import org.apache.dubbo.config.ServiceStoreConfig;
 +import org.apache.dubbo.config.spring.ConfigCenterBean;
  import org.apache.dubbo.config.spring.ReferenceBean;
  import org.apache.dubbo.config.spring.ServiceBean;
  import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
@@@ -46,8 -45,7 +45,7 @@@ public class DubboNamespaceHandler exte
          registerBeanDefinitionParser("application", new DubboBeanDefinitionParser(ApplicationConfig.class, true));
          registerBeanDefinitionParser("module", new DubboBeanDefinitionParser(ModuleConfig.class, true));
          registerBeanDefinitionParser("registry", new DubboBeanDefinitionParser(RegistryConfig.class, true));
-         registerBeanDefinitionParser("servicestore", new DubboBeanDefinitionParser(ServiceStoreConfig.class, true));
 -        registerBeanDefinitionParser("configcenter", new DubboBeanDefinitionParser(ConfigCenterConfig.class, true));
 +        registerBeanDefinitionParser("configcenter", new DubboBeanDefinitionParser(ConfigCenterBean.class, true));
          registerBeanDefinitionParser("monitor", new DubboBeanDefinitionParser(MonitorConfig.class, true));
          registerBeanDefinitionParser("provider", new DubboBeanDefinitionParser(ProviderConfig.class, true));
          registerBeanDefinitionParser("consumer", new DubboBeanDefinitionParser(ConsumerConfig.class, true));