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 2021/12/07 04:20:48 UTC
[dubbo] 02/04: Merge branch '3.0' into 3.0-metadata-refactor-merged
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch 3.0-metadata-refactor
in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit 084113ad2a0322aee74a68f6d56c99a70a5d3e1f
Merge: 1448ebe 8a7c360
Author: ken.lj <ke...@gmail.com>
AuthorDate: Mon Dec 6 16:47:56 2021 +0800
Merge branch '3.0' into 3.0-metadata-refactor-merged
# Conflicts:
# dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java
# dubbo-common/src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.java
# dubbo-common/src/test/java/org/apache/dubbo/common/status/reporter/MockFrameworkStatusReporter.java
# dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
# dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
# dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultModuleDeployer.java
# dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ConfigurableMetadataServiceExporter.java
# dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java
# dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java
# dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/SingleRegistryCenterDubboProtocolIntegrationTest.java
# dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/metadata/MetadataServiceExporterTest.java
# dubbo-metadata/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java
# dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java
# dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataUtils.java
# dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/store/InMemoryWritableMetadataService.java
# dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/store/RemoteMetadataServiceImpl.java
# dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListenerTest.java
# dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceHostPortCustomizerTest.java
# dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataUtilsTest.java
# dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryTest.java
# dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtilsTest.java
# dubbo-test/dubbo-test-spring/src/main/java/org/apache/dubbo/test/spring/SpringXmlConfigTest.java
# dubbo-test/dubbo-test-spring/src/main/resources/spring/dubbo-demo.xml
.gitignore | 3 +
dubbo-cluster/pom.xml | 4 -
.../org/apache/dubbo/rpc/cluster/Constants.java | 4 -
.../org/apache/dubbo/rpc/cluster/Directory.java | 29 ++
.../java/org/apache/dubbo/rpc/cluster/Router.java | 23 +-
.../org/apache/dubbo/rpc/cluster/RouterChain.java | 278 ++++++------
.../rpc/cluster/directory/AbstractDirectory.java | 280 +++++++++++-
.../rpc/cluster/directory/StaticDirectory.java | 38 +-
.../cluster/filter/DefaultFilterChainBuilder.java | 7 +-
.../dubbo/rpc/cluster/router/RouterResult.java | 55 +++
.../rpc/cluster/router/RouterSnapshotNode.java | 117 +++++
...ditionRouter.java => ConditionStateRouter.java} | 54 ++-
...ctory.java => ConditionStateRouterFactory.java} | 13 +-
.../config/{AppRouter.java => AppStateRouter.java} | 4 +-
...uterFactory.java => AppStateRouterFactory.java} | 14 +-
...nableRouter.java => ListenableStateRouter.java} | 39 +-
.../router/condition/config/ServiceRouter.java | 2 +-
...Factory.java => ServiceStateRouterFactory.java} | 10 +-
...terFactory.java => FileStateRouterFactory.java} | 18 +-
.../cluster/router/mesh/route/MeshRuleRouter.java | 12 +-
.../cluster/router/mock/MockInvokersSelector.java | 79 ++--
...terFactory.java => MockStateRouterFactory.java} | 10 +-
.../{ScriptRouter.java => ScriptStateRouter.java} | 36 +-
...rFactory.java => ScriptStateRouterFactory.java} | 10 +-
.../cluster/router/state/AbstractStateRouter.java | 61 +--
.../dubbo/rpc/cluster/router/state/BitList.java | 484 +++++++++++++++------
.../router/state/CacheableStateRouterFactory.java | 12 +-
.../rpc/cluster/router/state/RouterCache.java | 49 ---
.../rpc/cluster/router/state/StateRouter.java | 54 +--
.../cluster/router/state/StateRouterFactory.java | 3 +-
.../{AddrCache.java => StateRouterResult.java} | 48 +-
.../cluster/router/tag/TagDynamicStateRouter.java | 260 -----------
.../tag/{TagRouter.java => TagStateRouter.java} | 67 +--
...uterFactory.java => TagStateRouterFactory.java} | 9 +-
.../cluster/router/tag/TagStaticStateRouter.java | 142 ------
.../cluster/support/AbstractClusterInvoker.java | 137 ++++--
.../rpc/cluster/support/AvailableCluster.java | 8 +-
.../support/wrapper/MockClusterInvoker.java | 2 +
.../org.apache.dubbo.rpc.cluster.RouterFactory | 6 -
...bbo.rpc.cluster.router.state.StateRouterFactory | 8 +-
.../apache/dubbo/rpc/cluster/RouterChainTest.java | 7 +-
.../rpc/cluster/directory/StaticDirectoryTest.java | 25 +-
.../loadbalance/ConsistentHashLoadBalanceTest.java | 8 +-
.../router/condition/ConditionRouterTest.java | 253 ++++++-----
.../cluster/router/file/FileRouterEngineTest.java | 18 +-
.../router/mesh/route/MeshRuleRouterTest.java | 19 +-
.../router/mock/MockInvokersSelectorTest.java | 11 +-
...tRouterTest.java => ScriptStateRouterTest.java} | 59 +--
.../rpc/cluster/router/state/BitListTest.java | 479 +++++++++++++++++++-
.../support/AbstractClusterInvokerTest.java | 11 +-
.../support/ConnectivityValidationTest.java | 323 ++++++++++++++
.../support/FailoverClusterInvokerTest.java | 10 +-
.../org.apache.dubbo.rpc.cluster.RouterFactory | 1 -
...bbo.rpc.cluster.router.state.StateRouterFactory | 1 +
.../apache/dubbo/common/BaseServiceMetadata.java | 4 +-
.../src/main/java/org/apache/dubbo/common/URL.java | 112 +++--
.../common/beans/ScopeBeanExtensionInjector.java | 1 +
.../common/beans/factory/ScopeBeanFactory.java | 4 +-
.../beans/support/InstantiationStrategy.java | 2 +-
.../common/config/CompositeConfiguration.java | 4 +-
.../apache/dubbo/common/config/Environment.java | 9 +-
.../config/OrderedPropertiesConfiguration.java | 10 +-
.../dubbo/common/constants/CommonConstants.java | 17 +-
.../dubbo/common/deploy/AbstractDeployer.java | 12 +-
.../org/apache/dubbo/common/deploy/Deployer.java | 1 +
.../dubbo/common/extension/ExtensionDirector.java | 9 +-
.../dubbo/common/extension/ExtensionLoader.java | 38 +-
.../dubbo/common/extension/LoadingStrategy.java | 4 +-
.../extension/inject/SpiExtensionInjector.java | 1 +
.../extension/support/ActivateComparator.java | 10 +-
.../org/apache/dubbo/common/io/StreamUtils.java | 4 +-
.../common/io/UnsafeByteArrayOutputStream.java | 16 +-
.../apache/dubbo/common/io/UnsafeStringWriter.java | 4 +-
.../dubbo/common/lang/ShutdownHookCallbacks.java | 2 +-
.../common/resource/GlobalResourcesRepository.java | 22 +-
.../reporter/FrameworkStatusReportService.java | 12 +-
.../dubbo/common/threadlocal/InternalRunnable.java | 2 +-
.../manager/DefaultExecutorRepository.java | 32 +-
.../threadpool/manager/ExecutorRepository.java | 7 +
.../threadpool/serial/SerializingExecutor.java | 2 +-
.../dubbo/common/timer/HashedWheelTimer.java | 4 +-
.../common/url/component/ServiceAddressURL.java | 6 +
.../common/url/component/ServiceConfigURL.java | 14 +-
.../dubbo/common/url/component/URLAddress.java | 2 +-
.../common/utils/ClassLoaderResourceLoader.java | 18 +-
.../org/apache/dubbo/common/utils/ConfigUtils.java | 10 +-
.../org/apache/dubbo/common/utils/MD5Utils.java | 19 +-
.../dubbo/config/AbstractInterfaceConfig.java | 7 +
.../apache/dubbo/config/AbstractMethodConfig.java | 4 +
.../dubbo/config/AbstractReferenceConfig.java | 8 +
.../apache/dubbo/config/AbstractServiceConfig.java | 8 +
.../org/apache/dubbo/config/ApplicationConfig.java | 4 +
.../apache/dubbo/config/ConfigCenterConfig.java | 5 +
.../org/apache/dubbo/config/ConsumerConfig.java | 9 +
.../apache/dubbo/config/MetadataReportConfig.java | 10 +
.../java/org/apache/dubbo/config/MethodConfig.java | 5 +
.../org/apache/dubbo/config/MetricsConfig.java | 6 +-
.../java/org/apache/dubbo/config/ModuleConfig.java | 9 +
.../org/apache/dubbo/config/MonitorConfig.java | 10 +
.../org/apache/dubbo/config/ProtocolConfig.java | 57 +--
.../org/apache/dubbo/config/ProviderConfig.java | 74 +---
.../apache/dubbo/config/ReferenceConfigBase.java | 15 +
.../org/apache/dubbo/config/RegistryConfig.java | 18 +-
.../org/apache/dubbo/config/ServiceConfigBase.java | 16 +-
.../java/org/apache/dubbo/config/SslConfig.java | 8 +
.../dubbo/config/annotation/DubboReference.java | 4 +-
.../dubbo/config/annotation/DubboService.java | 2 +-
.../config/context/AbstractConfigManager.java | 17 +-
.../apache/dubbo/config/context/ConfigManager.java | 2 +-
.../dubbo/config/context/ModuleConfigManager.java | 126 +++++-
.../apache/dubbo/rpc/model/ApplicationModel.java | 5 +-
.../org/apache/dubbo/rpc/model/FrameworkModel.java | 62 +--
.../rpc/model/FrameworkServiceRepository.java | 13 +-
.../apache/dubbo/rpc/model/MethodDescriptor.java | 3 -
.../org/apache/dubbo/rpc/model/ScopeModel.java | 4 +
.../model/ScopeModelAwareExtensionProcessor.java | 2 +-
.../apache/dubbo/rpc/model/ServiceMetadata.java | 2 +-
.../common/CommonScopeModelInitializerTest.java | 62 +++
.../test/java/org/apache/dubbo/common/URLTest.java | 76 +++-
.../common/config/CompositeConfigurationTest.java | 21 +-
...rationTest.java => ConfigurationCacheTest.java} | 18 +-
.../dubbo/common/config/EnvironmentTest.java | 63 ++-
...ava => OrderedPropertiesConfigurationTest.java} | 5 +-
.../common/config/PropertiesConfigurationTest.java | 26 +-
.../file/FileSystemDynamicConfigurationTest.java | 5 +-
.../common/extension/ExtensionLoaderTest.java | 22 +-
.../impl/{Ext5Impl1.java => Ext6Impl1.java} | 4 +-
.../impl/{Ext5Impl2.java => Ext6Impl2.java} | 4 +-
.../impl/{Ext5Wrapper1.java => Ext6Wrapper1.java} | 4 +-
.../impl/{Ext5Wrapper2.java => Ext6Wrapper2.java} | 4 +-
.../inject/AdaptiveExtensionInjectorTest.java | 58 +++
.../dubbo/common/io/UnsafeStringWriterTest.java | 4 +-
.../resource/GlobalResourcesRepositoryTest.java | 77 ++++
.../reporter/FrameworkStatusReportServiceTest.java | 106 +++++
.../threadlocal/InternalThreadLocalTest.java | 6 +
.../dubbo/common/utils/AnnotationUtilsTest.java | 74 ++--
.../utils/ClassLoaderResourceLoaderTest.java | 58 +++
.../apache/dubbo/common/utils/ConfigUtilsTest.java | 10 +
.../apache/dubbo/common/utils/MD5UtilsTest.java | 95 ++++
.../context/ConfigConfigurationAdapterTest.java} | 25 +-
.../dubbo/config/context/ConfigManagerTest.java | 104 ++++-
.../dubbo/rpc/model/ApplicationModelTest.java | 146 +++++++
.../apache/dubbo/rpc/model/FrameworkModelTest.java | 106 +++++
.../rpc/model/FrameworkServiceRepositoryTest.java | 113 +++++
.../apache/dubbo/rpc/model/ModuleModelTest.java | 89 ++++
.../rpc/model/ModuleServiceRepositoryTest.java | 113 +++++
.../ScopeModelAwareExtensionProcessorTest.java | 78 ++++
.../org/apache/dubbo/rpc/model/ScopeModelTest.java | 9 +-
.../apache/dubbo/rpc/model/ScopeModelUtilTest.java | 114 +++++
.../dubbo/rpc/model/ServiceRepositoryTest.java | 90 ++++
.../support/DemoService.java} | 8 +-
.../support/DemoServiceImpl.java} | 11 +-
.../dubbo/rpc/support/MockScopeModelAware.java | 72 +++
.../support/MockScopeModelDestroyListener.java} | 26 +-
...che.dubbo.common.extension.ext6_wrap.WrappedExt | 8 +-
....common.status.reporter.FrameworkStatusReporter | 1 +
.../src/test/resources/dubbo-migration.yaml | 6 +-
.../main/java/com/alibaba/dubbo/common/URL.java | 5 +-
dubbo-config/dubbo-config-api/pom.xml | 12 -
.../org/apache/dubbo/config/ReferenceConfig.java | 21 +-
.../org/apache/dubbo/config/ServiceConfig.java | 28 +-
.../config/deploy/DefaultApplicationDeployer.java | 177 +++++---
.../dubbo/config/deploy/DefaultModuleDeployer.java | 63 ++-
.../invoker/DelegateProviderMetaDataInvoker.java | 3 +-
.../dubbo/config/utils/SimpleReferenceCache.java | 13 +-
.../dubbo/config/AbstractReferenceConfigTest.java | 19 +-
.../dubbo/config/ConfigCenterConfigTest.java | 13 +-
.../config/ConfigScopeModelInitializerTest.java} | 37 +-
.../apache/dubbo/config/ReferenceConfigTest.java | 19 +-
.../apache/dubbo/config/RegistryConfigTest.java | 7 +-
.../dubbo/config/bootstrap/DubboBootstrapTest.java | 30 +-
.../bootstrap/DubboServiceConsumerBootstrap.java | 5 +-
.../bootstrap/DubboServiceProviderBootstrap.java | 7 +-
.../DubboServiceProviderMinimumBootstrap.java | 3 +-
.../dubbo/config/bootstrap/MultiInstanceTest.java | 44 +-
.../ZookeeperDubboServiceConsumerBootstrap.java | 3 +-
.../DubboInterfaceConsumerBootstrap.java | 3 +-
.../AbstractRegistryCenterExporterListener.java | 2 +-
.../AbstractRegistryCenterServiceListener.java | 2 +-
.../dubbo/{ => config}/integration/Constants.java | 2 +-
.../{ => config}/integration/IntegrationTest.java | 2 +-
.../integration/multiple/AbstractStorage.java | 2 +-
.../{ => config}/integration/multiple/Storage.java | 2 +-
...gistryCenterExportMetadataExporterListener.java | 4 +-
...egistryCenterExportMetadataIntegrationTest.java | 25 +-
...ultipleRegistryCenterExportMetadataService.java | 2 +-
...pleRegistryCenterExportMetadataServiceImpl.java | 2 +-
...egistryCenterExportMetadataServiceListener.java | 4 +-
...gistryCenterExportProviderExporterListener.java | 4 +-
...MultipleRegistryCenterExportProviderFilter.java | 2 +-
...egistryCenterExportProviderIntegrationTest.java | 27 +-
...nterExportProviderRegistryProtocolListener.java | 2 +-
...ultipleRegistryCenterExportProviderService.java | 2 +-
...pleRegistryCenterExportProviderServiceImpl.java | 2 +-
...egistryCenterExportProviderServiceListener.java | 4 +-
...ultipleRegistryCenterInjvmExporterListener.java | 4 +-
.../injvm/MultipleRegistryCenterInjvmFilter.java | 2 +-
...MultipleRegistryCenterInjvmIntegrationTest.java | 29 +-
.../injvm/MultipleRegistryCenterInjvmService.java | 2 +-
.../MultipleRegistryCenterInjvmServiceImpl.java | 2 +-
...MultipleRegistryCenterInjvmServiceListener.java | 4 +-
.../integration/multiple/package-info.java | 2 +-
...terServiceDiscoveryRegistryIntegrationTest.java | 41 +-
...ceDiscoveryRegistryRegistryServiceListener.java | 4 +-
...istryCenterServiceDiscoveryRegistryService.java | 2 +-
...yCenterServiceDiscoveryRegistryServiceImpl.java | 2 +-
.../ServiceDiscoveryRegistryInfoWrapper.java | 2 +-
.../ServiceDiscoveryRegistryStorage.java | 4 +-
...RegistryCenterDubboProtocolIntegrationTest.java | 22 +-
...ingleRegistryCenterExportedServiceListener.java | 4 +-
.../SingleRegistryCenterIntegrationService.java | 2 +-
...SingleRegistryCenterIntegrationServiceImpl.java | 2 +-
...gistryCenterExportMetadataExporterListener.java | 4 +-
...egistryCenterExportMetadataIntegrationTest.java | 23 +-
.../SingleRegistryCenterExportMetadataService.java | 2 +-
...gleRegistryCenterExportMetadataServiceImpl.java | 2 +-
...egistryCenterExportMetadataServiceListener.java | 4 +-
...gistryCenterExportProviderExporterListener.java | 4 +-
.../SingleRegistryCenterExportProviderFilter.java | 2 +-
...egistryCenterExportProviderIntegrationTest.java | 24 +-
...nterExportProviderRegistryProtocolListener.java | 4 +-
.../SingleRegistryCenterExportProviderService.java | 2 +-
...gleRegistryCenterExportProviderServiceImpl.java | 2 +-
...egistryCenterExportProviderServiceListener.java | 4 +-
.../SingleRegistryCenterInjvmExporterListener.java | 4 +-
.../injvm/SingleRegistryCenterInjvmFilter.java | 2 +-
.../SingleRegistryCenterInjvmIntegrationTest.java | 23 +-
.../injvm/SingleRegistryCenterInjvmService.java | 2 +-
.../SingleRegistryCenterInjvmServiceImpl.java | 2 +-
.../SingleRegistryCenterInjvmServiceListener.java | 4 +-
.../integration/single/package-info.java | 2 +-
.../metadata/MetadataServiceExporterTest.java | 252 +++++++++++
.../registrycenter/AbstractRegistryCenter.java | 107 -----
.../dubbo/registrycenter/RegistryCenter.java | 70 ---
.../ZookeeperMultipleRegistryCenter.java | 45 --
.../registrycenter/ZookeeperRegistryCenter.java | 142 ------
.../org.apache.dubbo.config.ServiceListener | 14 +-
...g.apache.dubbo.registry.RegistryServiceListener | 2 +-
...o.registry.integration.RegistryProtocolListener | 4 +-
.../services/org.apache.dubbo.rpc.ExporterListener | 12 +-
.../META-INF/services/org.apache.dubbo.rpc.Filter | 8 +-
dubbo-config/dubbo-config-spring/pom.xml | 22 -
.../dubbo/config/spring/ConfigCenterBean.java | 9 +
.../apache/dubbo/config/spring/ServiceBean.java | 11 +
.../config/spring/SpringScopeModelInitializer.java | 3 +-
.../annotation/ServiceAnnotationPostProcessor.java | 10 +-
.../spring/context/DubboConfigBeanInitializer.java | 12 +-
.../config/spring/reference/ReferenceCreator.java | 139 ++----
.../org/apache/dubbo/config/spring/ConfigTest.java | 15 -
.../dubbo/config/spring/JavaConfigBeanTest.java | 19 +-
.../annotation/MethodConfigCallbackTest.java | 9 +-
.../factory/annotation/ReferenceCreatorTest.java | 40 +-
.../XmlReferenceBeanConditionalTest.java | 7 -
...nfigAnnotationReferenceBeanConditionalTest.java | 7 -
.../JavaConfigRawReferenceBeanConditionalTest.java | 7 -
.../JavaConfigReferenceBeanConditionalTest4.java | 7 -
.../configprops/SpringBootConfigPropsTest.java | 64 ++-
.../SpringBootMultipleConfigPropsTest.java | 17 +-
.../importxml/SpringBootImportDubboXmlTest.java | 7 -
.../annotation/DubboConfigConfigurationTest.java | 24 +-
.../context/annotation/EnableDubboConfigTest.java | 7 -
.../customize/DubboSpringInitCustomizerTest.java | 11 +-
.../spring/issues/issue6000/Issue6000Test.java | 7 -
.../spring/issues/issue6252/Issue6252Test.java | 7 -
.../spring/issues/issue7003/Issue7003Test.java | 7 -
.../issue9172/MultipleConsumerAndProviderTest.java | 105 +++++
.../issues/issue9207/ConfigCenterBeanTest.java | 108 +++++
.../consumer/PropertyConfigurerTest.java | 7 -
.../propertyconfigurer/consumer/app.properties | 2 +-
.../propertyconfigurer/consumer/dubbo-consumer.xml | 2 +-
.../consumer2/PropertySourcesConfigurerTest.java | 7 -
.../propertyconfigurer/consumer2/app.properties | 2 +-
.../consumer2/dubbo-consumer.xml | 2 +-
.../consumer3/PropertySourcesInJavaConfigTest.java | 16 -
.../propertyconfigurer/consumer3/app.properties | 2 +-
.../consumer3/dubbo-consumer.xml | 2 +-
.../propertyconfigurer/provider/app.properties | 6 +-
.../reference/DubboConfigBeanInitializerTest.java | 8 +-
.../config/spring/reference/ReferenceKeyTest.java | 18 -
.../javaconfig/JavaConfigReferenceBeanTest.java | 19 -
.../reference/javaconfig/consumer.properties | 2 +-
.../spring/reference/localcall/LocalCallTest.java | 8 -
.../spring/reference/localcall/LocalCallTest2.java | 7 -
.../reference/localcall/local-call-provider.xml | 2 +-
.../LocalCallMultipleReferenceAnnotationsTest.java | 12 -
.../localcallam/local-call-config.properties | 2 +-
.../registrycenter/AbstractRegistryCenter.java | 107 -----
.../spring/registrycenter/RegistryCenter.java | 75 ----
.../ZookeeperMultipleRegistryCenter.java | 43 --
.../registrycenter/ZookeeperRegistryCenter.java | 147 -------
.../ZookeeperSingleRegistryCenter.java | 44 --
.../config/spring/schema/GenericServiceTest.java | 7 -
.../schema/GenericServiceWithoutInterfaceTest.java | 7 -
.../META-INF/issues/issue6000/config.properties | 2 +-
.../META-INF/issues/issue6252/config.properties | 4 +-
.../META-INF/issues/issue7003/config.properties | 2 +-
.../META-INF/issues/issue9172/consumer.properties | 30 ++
.../META-INF/issues/issue9172/provider.properties | 24 +
.../dubbo-properties-in-configcenter.properties | 6 +-
.../zookeeper-dubbb-consumer.properties | 2 +-
.../zookeeper-dubbb-provider.properties | 2 +-
.../zookeeper-dubbo-consumer.xml | 4 +-
.../dubbo-generic-consumer-without-interface.xml | 2 +-
.../META-INF/spring/dubbo-generic-consumer.xml | 2 +-
.../support/apollo/ApolloDynamicConfiguration.java | 66 +--
.../support/nacos/NacosDynamicConfiguration.java | 4 +-
.../dubbo-configcenter-zookeeper/pom.xml | 5 -
.../ZookeeperDynamicConfigurationTest.java | 98 ++---
.../resources/spring/dubbo-consumer.properties | 1 +
.../resources/spring/dubbo-provider.properties | 2 +-
.../apache/dubbo/demo/consumer/Application.java | 13 +-
.../apache/dubbo/demo/provider/Application.java | 3 +
.../dubbo/demo/consumer/GenericApplication.java | 2 +
.../dubbo/demo/graalvm/consumer/Application.java | 17 +-
.../dubbo/demo/graalvm/provider/Application.java | 15 +-
.../dubbo-demo-spring-boot-consumer}/pom.xml | 90 ++--
.../demo/consumer/ConsumerApplication.java | 47 ++
.../src/main/resources/application.yml | 29 ++
.../src/main/resources/log4j.properties | 0
.../dubbo-demo-spring-boot-interface}/pom.xml | 20 +-
.../apache/dubbo/springboot/demo/DemoService.java | 13 +-
.../dubbo-demo-spring-boot-provider}/pom.xml | 91 ++--
.../springboot/demo/provider/DemoServiceImpl.java | 21 +-
.../demo/provider/ProviderApplication.java} | 20 +-
.../src/main/resources/application.yml | 29 ++
.../src/main/resources/log4j.properties | 0
.../dubbo-demo-spring-boot}/pom.xml | 28 +-
.../apache/dubbo/demo/consumer/ApiConsumer.java | 12 +-
.../dubbo/demo/consumer/ApiWrapperConsumer.java | 9 +-
.../apache/dubbo/demo/provider/ApiProvider.java | 10 +-
.../dubbo/demo/provider/ApiWrapperProvider.java | 10 +-
.../src/main/resources/spring/dubbo-consumer.xml | 4 +
.../demo/provider/chain/ChainServiceImpl.java | 33 --
.../src/main/resources/dubbo.properties | 1 -
.../main/resources/spring/dubbo-provider-chain.xml | 35 --
dubbo-demo/pom.xml | 1 +
dubbo-dependencies-bom/pom.xml | 20 +-
dubbo-distribution/dubbo-all/pom.xml | 4 -
dubbo-metadata/dubbo-metadata-api/pom.xml | 6 -
.../org/apache/dubbo/metadata/MetadataInfo.java | 4 +
.../apache/dubbo/metadata/RevisionResolver.java | 4 +-
.../dubbo/metadata/rest/SpringRestService.java | 10 +-
.../dubbo/metadata/rest/SpringRestService.java | 10 +-
.../metadata/store/nacos/NacosMetadataReport.java | 14 +-
dubbo-metadata/dubbo-metadata-report-redis/pom.xml | 5 -
.../dubbo-metadata-report-zookeeper/pom.xml | 5 -
.../zookeeper/ZookeeperMetadataReportTest.java | 21 +-
.../java/org/apache/dubbo/monitor/Constants.java | 36 +-
.../org/apache/dubbo/monitor/MonitorService.java | 38 --
.../dubbo/monitor/support/MonitorFilter.java | 43 +-
.../dubbo/monitor/support/MonitorFilterTest.java | 39 +-
.../apache/dubbo/monitor/dubbo/DubboMonitor.java | 141 +++---
.../apache/dubbo/monitor/dubbo/MetricsFilter.java | 6 +-
.../org/apache/dubbo/monitor/dubbo/Statistics.java | 23 +-
.../apache/dubbo/monitor/dubbo/StatisticsItem.java | 132 ++++++
.../dubbo/monitor/dubbo/DubboMonitorTest.java | 106 +++--
.../dubbo/monitor/dubbo/MetricsFilterTest.java | 8 +-
.../apache/dubbo/monitor/dubbo/StatisticsTest.java | 54 ++-
.../META-INF/native-image/reflect-config.json | 8 +-
.../router/state/StateRouterFactory$Adaptive.java | 6 +-
.../dubbo/qos/command/CommandContextFactory.java | 6 +-
.../qos/command/decoder/HttpCommandDecoder.java | 6 +-
.../apache/dubbo/qos/command/impl/BaseOffline.java | 5 +-
.../dubbo/qos/command/impl/ChangeTelnet.java | 3 +-
.../apache/dubbo/qos/command/impl/CountTelnet.java | 4 +-
.../org/apache/dubbo/qos/command/impl/Help.java | 14 +-
.../dubbo/qos/command/impl/InvokeTelnet.java | 13 +-
.../org/apache/dubbo/qos/command/impl/Live.java | 23 +-
.../apache/dubbo/qos/command/impl/OfflineApp.java | 3 -
.../org/apache/dubbo/qos/command/impl/Online.java | 12 +-
.../apache/dubbo/qos/command/impl/OnlineApp.java | 2 +-
.../apache/dubbo/qos/command/impl/PortTelnet.java | 2 +-
.../apache/dubbo/qos/command/impl/PwdTelnet.java | 3 +-
.../dubbo/qos/command/impl/SelectTelnet.java | 3 +-
.../dubbo/qos/command/util/CommandHelper.java | 2 +-
.../dubbo/qos/legacy/ChangeTelnetHandler.java | 3 +-
.../dubbo/qos/legacy/TraceTelnetHandler.java | 6 +-
.../org/apache/dubbo/qos/probe/LivenessProbe.java | 2 +-
.../org/apache/dubbo/qos/probe/ReadinessProbe.java | 2 +-
.../org/apache/dubbo/qos/probe/StartupProbe.java | 2 +-
.../qos/server/handler/HttpProcessHandler.java | 4 +-
.../command/decoder/HttpCommandDecoderTest.java | 10 +-
.../dubbo/qos/command/impl/InvokeTelnetTest.java | 10 +-
.../apache/dubbo/qos/command/impl/LiveTest.java | 52 +++
.../org/apache/dubbo/qos/command/impl/LsTest.java | 177 ++++----
.../dubbo/qos/command/impl/MockLivenessProbe.java | 24 +-
.../apache/dubbo/qos/command/impl/OfflineTest.java | 170 +++++---
.../apache/dubbo/qos/command/impl/OnlineTest.java | 162 ++++---
.../qos/command/impl/PublishMetadataTest.java | 78 ++++
.../apache/dubbo/qos/command/impl/ReadyTest.java | 78 ++++
.../apache/dubbo/qos/command/impl/StartupTest.java | 75 ++++
.../dubbo/qos/legacy/service/DemoServiceImpl.java | 4 +-
.../qos/server/handler/HttpProcessHandlerTest.java | 16 +-
.../org.apache.dubbo.qos.probe.LivenessProbe | 1 +
.../dubbo/registry/ListenerRegistryWrapper.java | 4 +-
.../registry/client/DefaultServiceInstance.java | 76 +++-
.../dubbo/registry/client/InstanceAddressURL.java | 6 +-
.../client/ServiceDiscoveryRegistryDirectory.java | 47 +-
.../dubbo/registry/client/ServiceInstance.java | 10 +-
.../listener/ServiceInstancesChangedListener.java | 7 +-
.../registry/client/metadata/MetadataUtils.java | 4 +-
.../StandardMetadataServiceURLBuilder.java | 10 +-
.../DefaultMigrationAddressComparator.java | 20 +-
.../client/migration/MigrationInvoker.java | 2 +-
.../integration/AbstractConfiguratorListener.java | 27 +-
.../registry/integration/DynamicDirectory.java | 30 +-
.../registry/integration/RegistryDirectory.java | 89 ++--
.../support/CacheableFailbackRegistry.java | 2 +-
.../client/DefaultServiceInstanceTest.java | 2 +-
.../client/metadata/MetadataUtilsTest.java | 31 +-
.../StandardMetadataServiceURLBuilderTest.java | 9 +-
.../registry/support/FailbackRegistryTest.java | 38 +-
dubbo-registry/dubbo-registry-multiple/pom.xml | 5 -
.../multiple/MultipleRegistry2S2RTest.java | 61 +--
.../apache/dubbo/registry/nacos/NacosRegistry.java | 45 +-
dubbo-registry/dubbo-registry-zookeeper/pom.xml | 5 -
.../registry/zookeeper/ZookeeperRegistryTest.java | 24 +-
.../zookeeper/ZookeeperServiceDiscoveryTest.java | 14 +-
.../zookeeper/util/CuratorFrameworkUtilsTest.java | 16 +-
.../org/apache/dubbo/remoting/api/SslContexts.java | 50 ++-
.../exchange/PortUnificationExchanger.java | 5 +-
.../remoting/exchange/codec/ExchangeCodec.java | 2 -
.../telnet/support/command/ClearTelnetHandler.java | 3 +-
.../telnet/support/command/ExitTelnetHandler.java | 2 +-
.../telnet/support/command/HelpTelnetHandler.java | 66 +--
.../dubbo/remoting/transport/AbstractClient.java | 28 +-
.../dubbo/remoting/http/jetty/JettyHttpServer.java | 9 +-
.../remoting/http/jetty/JettyLoggerAdapter.java | 157 +++++++
.../http/jetty/JettyLoggerAdapterTest.java | 127 ++++++
.../src/test/resources/log4j.xml | 41 ++
.../dubbo-remoting-zookeeper-curator5/pom.xml | 6 -
.../curator5/Curator5ZookeeperClient.java | 12 +-
.../curator5/Curator5ZookeeperClientTest.java | 27 +-
.../curator5/Curator5ZookeeperTransporterTest.java | 21 +-
.../support/AbstractZookeeperTransporterTest.java | 134 ++----
dubbo-remoting/dubbo-remoting-zookeeper/pom.xml | 5 -
.../zookeeper/curator/CuratorZookeeperClient.java | 12 +-
.../curator/CuratorZookeeperClientTest.java | 27 +-
.../curator/CuratorZookeeperTransporterTest.java | 22 +-
.../support/AbstractZookeeperTransporterTest.java | 137 +++---
.../org/apache/dubbo/rpc/RpcContextAttachment.java | 4 +-
.../java/org/apache/dubbo/rpc/RpcInvocation.java | 20 +-
.../org/apache/dubbo/rpc/filter/ContextFilter.java | 2 +-
.../apache/dubbo/rpc/CancellationContextTest.java | 61 +++
.../dubbo/rpc/protocol/grpc/GrpcOptionsUtils.java | 48 +-
.../dubbo/rpc/protocol/grpc/GrpcProtocolTest.java | 8 +-
.../dubbo/rpc/protocol/injvm/InjvmInvoker.java | 6 +-
.../rpc/protocol/tri/AbstractClientStream.java | 6 +-
.../dubbo/rpc/protocol/tri/AbstractStream.java | 5 +-
.../tri/ClientOutboundTransportObserver.java | 36 +-
.../apache/dubbo/rpc/protocol/tri/Compressor.java | 3 +
.../apache/dubbo/rpc/protocol/tri/GrpcStatus.java | 2 +-
.../protocol/tri/OutboundTransportObserver.java | 16 +-
.../tri/ServerOutboundTransportObserver.java | 51 +--
.../rpc/protocol/tri/SingleProtobufUtils.java | 17 +-
.../dubbo/rpc/protocol/tri/TransportState.java | 3 +-
.../protocol/tri/TripleClientRequestHandler.java | 5 +-
.../protocol/tri/TripleCommandOutBoundHandler.java | 29 +-
.../dubbo/rpc/protocol/tri/TripleHeaderEnum.java | 3 -
.../tri/TripleHttp2FrameServerHandler.java | 25 +-
.../rpc/protocol/tri/TripleHttp2Protocol.java | 1 +
.../dubbo/rpc/protocol/tri/TripleProtocol.java | 3 -
.../dubbo/rpc/protocol/tri/UnaryClientStream.java | 2 +-
.../dubbo/rpc/protocol/tri/UnaryServerStream.java | 2 +-
.../apache/dubbo/rpc/protocol/tri/WriteQueue.java | 87 ++++
.../protocol/tri/command/CancelQueueCommand.java | 34 +-
.../rpc/protocol/tri/command/DataQueueCommand.java | 99 +++++
.../protocol/tri/command/FlushQueueCommand.java | 15 +-
.../protocol/tri/command/HeaderQueueCommand.java | 81 ++++
.../rpc/protocol/tri/command/QueuedCommand.java | 69 +++
.../protocol/tri/command/TextDataQueueCommand.java | 46 ++
.../protocol/tri/service/TriBuiltinService.java | 2 +-
.../rpc/protocol/tri/service/TriHealthImpl.java | 2 +-
.../dubbo/rpc/protocol/tri/AbstractStreamTest.java | 118 +++++
.../dubbo/rpc/protocol/tri/ClientStreamTest.java | 367 ++++++++++++++++
.../rpc/protocol/tri/GrpcDataDecoderTest.java | 101 +++++
.../dubbo/rpc/protocol/tri/ServerStreamTest.java | 291 +++++++++++++
.../rpc/protocol/tri/SingleProtobufUtilsTest.java | 77 ++++
.../dubbo/rpc/protocol/tri/TransportStateTest.java | 2 +-
.../tri/TripleHttp2ClientResponseHandlerTest.java | 107 +++++
.../dubbo/rpc/protocol/tri/TripleProtocolTest.java | 52 ++-
.../dubbo/rpc/protocol/tri/WriteQueueTest.java | 113 +++++
.../tri/service/TriBuiltinServiceTest.java | 43 ++
.../protocol/tri/service/TriHealthImplTest.java | 129 ++++++
.../dubbo/rpc/protocol/tri/support/IGreeter.java | 4 +
.../rpc/protocol/tri/support/IGreeterImpl.java | 15 +-
.../tri/support/MockAbstractStreamImpl.java | 34 +-
.../{IGreeterImpl.java => MockStreamObserver.java} | 44 +-
.../dubbo/DefaultHessian2FactoryInitializer.java | 2 +-
.../dubbo/WhitelistHessian2FactoryInitializer.java | 2 +-
.../DubboListenerAutoConfiguration.java | 7 -
.../src/main/resources/META-INF/spring.factories | 2 +
dubbo-test/dubbo-test-check/pom.xml | 37 +-
...bstractRegistryCenterTestExecutionListener.java | 100 +++++
.../dubbo/test/check/RegistryCenterFinished.java | 28 +-
.../dubbo/test/check/RegistryCenterStarted.java | 50 +++
.../test/check/exception/DubboTestException.java | 43 ++
.../dubbo/test/check/registrycenter/Config.java | 67 +++
.../dubbo/test/check/registrycenter/Context.java | 6 +-
.../registrycenter/GlobalRegistryCenter.java} | 35 +-
.../test/check/registrycenter/Initializer.java | 14 +-
.../dubbo/test/check/registrycenter/Processor.java | 22 +-
.../test/check/registrycenter/RegistryCenter.java | 31 +-
.../registrycenter/ZookeeperRegistryCenter.java | 239 ++++++++++
.../registrycenter/config/ZookeeperConfig.java | 175 ++++++++
.../config/ZookeeperRegistryCenterConfig.java | 84 ++++
.../registrycenter/context/ZookeeperContext.java | 92 ++++
.../context/ZookeeperWindowsContext.java | 110 +++++
.../initializer/ConfigZookeeperInitializer.java | 143 ++++++
.../initializer/DownloadZookeeperInitializer.java | 177 ++++++++
.../initializer/UnpackZookeeperInitializer.java | 114 +++++
.../initializer/ZookeeperInitializer.java | 51 +++
.../processor/FindPidWindowsProcessor.java | 119 +++++
.../processor/KillProcessWindowsProcessor.java | 61 +++
.../processor/ResetZookeeperProcessor.java | 55 +++
.../processor/StartZookeeperUnixProcessor.java | 68 +++
.../processor/StartZookeeperWindowsProcessor.java | 81 ++++
.../processor/StopZookeeperUnixProcessor.java | 66 +++
.../processor/StopZookeeperWindowsProcessor.java | 52 +++
.../processor/ZookeeperUnixProcessor.java | 109 +++++
.../processor/ZookeeperWindowsProcessor.java | 41 ++
...g.junit.platform.launcher.TestExecutionListener | 4 +
dubbo-test/dubbo-test-common/pom.xml | 12 -
.../dubbo/test/common/EmbeddedZooKeeper.java | 248 -----------
.../apache/dubbo/test/common/ZooKeeperServer.java | 57 ---
.../registrycenter/AbstractRegistryCenter.java | 107 -----
.../test/common/registrycenter/RegistryCenter.java | 70 ---
.../ZookeeperMultipleRegistryCenter.java | 43 --
.../registrycenter/ZookeeperRegistryCenter.java | 142 ------
.../test/spring/SpringAnnotationBeanTest.java | 7 -
.../test/spring/SpringJavaConfigBeanTest.java | 10 +-
.../dubbo/test/spring/SpringXmlConfigTest.java | 6 -
.../src/main/resources/demo-app.properties | 6 +-
.../src/main/resources/spring/dubbo-demo.xml | 6 +-
534 files changed, 12634 insertions(+), 5970 deletions(-)
diff --cc dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java
index d4e4774,887591b..154a993
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java
@@@ -18,10 -18,11 +18,11 @@@ package org.apache.dubbo.common.config
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
+ import org.apache.dubbo.common.utils.ArrayUtils;
import java.util.Arrays;
-import java.util.LinkedList;
import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
/**
* This is an abstraction specially customized for the sequence Dubbo retrieves properties.
diff --cc dubbo-common/src/main/java/org/apache/dubbo/common/deploy/AbstractDeployer.java
index e01b46ac,ba53201..704f0ea
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/AbstractDeployer.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/AbstractDeployer.java
@@@ -37,9 -37,11 +37,11 @@@ public abstract class AbstractDeployer<
private volatile DeployState state = PENDING;
+ private volatile Throwable lastError;
+
protected AtomicBoolean initialized = new AtomicBoolean(false);
- private List<DeployListener<E>> listeners = new ArrayList<>();
+ protected List<DeployListener<E>> listeners = new ArrayList<>();
private E scopeModel;
diff --cc dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
index 4a1a8df,0a07fc3..880fce3
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
@@@ -739,12 -727,10 +748,11 @@@ public class ServiceConfig<T> extends S
* @param name
* @return
*/
- private Integer findConfigedPorts(ProtocolConfig protocolConfig,
- String name,
- Map<String, String> map) {
+ private static synchronized Integer findConfiguredPort(ProtocolConfig protocolConfig,
+ ProviderConfig provider,
+ ExtensionLoader<Protocol> extensionLoader,
- String name,
- Map<String, String> map) {
- Integer portToBind = null;
++ String name,Map<String, String> map) {
+ Integer portToBind;
// parse bind port from environment
String port = getValueFromConfig(protocolConfig, DUBBO_PORT_TO_BIND);
@@@ -769,20 -755,20 +777,20 @@@
}
}
- // registry port, not used as binding port by default
+ // save bind port, used as url's key later
+ map.put(BIND_PORT_KEY, String.valueOf(portToBind));
+
+ // registry port, not used as bind port by default
String portToRegistryStr = getValueFromConfig(protocolConfig, DUBBO_PORT_TO_REGISTRY);
Integer portToRegistry = parsePort(portToRegistryStr);
- if (portToRegistry != null) {
- portToBind = portToRegistry;
+ if (portToRegistry == null) {
+ portToRegistry = portToBind;
}
- // save binding port, will be used as key in url later
- map.put(BIND_PORT_KEY, String.valueOf(portToBind));
-
- return portToBind;
+ return portToRegistry;
}
- private Integer parsePort(String configPort) {
+ private static Integer parsePort(String configPort) {
Integer port = null;
if (configPort != null && configPort.length() > 0) {
try {
diff --cc dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
index 7645b6c,3688d67..b8ffa6f
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
@@@ -548,29 -581,30 +553,30 @@@ public class DefaultApplicationDeploye
startModules();
// prepare application instance
- prepareApplicationInstance();
+// prepareApplicationInstance();
- executorRepository.getSharedExecutor().submit(() -> {
- try {
- while (isStarting()) {
- // notify when any module state changed
- synchronized (stateLock) {
- try {
- stateLock.wait(500);
- } catch (InterruptedException e) {
- // ignore
- }
- }
-
- // if has new module, do start again
- if (hasPendingModule()) {
- startModules();
- }
- }
- } catch (Exception e) {
- logger.warn("waiting for application startup occurred an exception", e);
- }
- });
+ // Ignore checking new module after start
+ // executorRepository.getSharedExecutor().submit(() -> {
+ // try {
+ // while (isStarting()) {
+ // // notify when any module state changed
+ // synchronized (stateLock) {
+ // try {
+ // stateLock.wait(500);
+ // } catch (InterruptedException e) {
+ // // ignore
+ // }
+ // }
+ //
+ // // if has new module, do start again
+ // if (hasPendingModule()) {
+ // startModules();
+ // }
+ // }
+ // } catch (Throwable e) {
+ // onFailed(getIdentifier() + " check start occurred an exception", e);
+ // }
+ // });
}
private void startModules() {
@@@ -910,15 -1035,12 +938,12 @@@
}
// refresh metadata
try {
- if (serviceInstance != null) {
- ServiceInstanceMetadataUtils.refreshMetadataAndInstance(serviceInstance);
+ if (registered) {
+ ServiceInstanceMetadataUtils.refreshMetadataAndInstance(applicationModel);
}
} catch (Exception e) {
- logger.error("refresh metadata failed: " + e.getMessage(), e);
+ logger.error("refresh meta and instance failed: " + e.getMessage(), e);
}
- // shutdown export/refer executor after started
- executorRepository.shutdownServiceExportExecutor();
- executorRepository.shutdownServiceReferExecutor();
} finally {
// complete future
completeStartFuture(true);
diff --cc dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultModuleDeployer.java
index de27724,173b343..30d2892
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultModuleDeployer.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultModuleDeployer.java
@@@ -127,41 -127,50 +127,50 @@@ public class DefaultModuleDeployer exte
throw new IllegalStateException(getIdentifier() + " is stopping or stopped, can not start again");
}
- if (isStarting() || isStarted()) {
- return startFuture;
- }
+ try {
+ if (isStarting() || isStarted()) {
+ return startFuture;
+ }
- onModuleStarting();
+ onModuleStarting();
- // initialize
- applicationDeployer.initialize();
- initialize();
+ // initialize
+ applicationDeployer.initialize();
+ initialize();
- // export services
- exportServices();
+ // export services
+ exportServices();
- // prepare application instance
- // exclude internal module to avoid wait itself
- if (moduleModel != moduleModel.getApplicationModel().getInternalModule()) {
- applicationDeployer.prepareApplicationInstance();
- }
+ // prepare application instance
+ // exclude internal module to avoid wait itself
+ if (moduleModel != moduleModel.getApplicationModel().getInternalModule()) {
+ applicationDeployer.prepareInternalModule();
+ }
- // refer services
- referServices();
-
- executorRepository.getSharedExecutor().submit(() -> {
- try {
- // wait for export finish
- waitExportFinish();
- // wait for refer finish
- waitReferFinish();
- } catch (Throwable e) {
- logger.warn("wait for export/refer services occurred an exception", e);
- } finally {
+ // refer services
+ referServices();
+
+ // if no async export/refer services, just set started
+ if (asyncExportingFutures.isEmpty() && asyncReferringFutures.isEmpty()) {
onModuleStarted();
+ } else {
+ executorRepository.getSharedExecutor().submit(() -> {
+ try {
+ // wait for export finish
+ waitExportFinish();
+ // wait for refer finish
+ waitReferFinish();
+ } catch (Throwable e) {
+ logger.warn("wait for export/refer services occurred an exception", e);
+ } finally {
+ onModuleStarted();
+ }
+ });
}
- });
-
+ } catch (Throwable e) {
+ onModuleFailed(getIdentifier() + " start failed: " + e.toString(), e);
+ throw e;
+ }
return startFuture;
}
diff --cc dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java
index e989cc8,15707bd..201991f
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java
@@@ -288,7 -275,7 +274,7 @@@ public class DubboBootstrapTest
.service(service)
.start();
-- assertMetadataService(bootstrap, availablePort, true);
++ assertMetadataService(bootstrap, availablePort, false);
}
@Test
diff --cc dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryRegistryServiceListener.java
index 50ae00f,519f75a..f84a9b8
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryRegistryServiceListener.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryRegistryServiceListener.java
@@@ -21,8 -21,10 +21,8 @@@ import org.apache.dubbo.common.extensio
import org.apache.dubbo.registry.Registry;
import org.apache.dubbo.registry.RegistryServiceListener;
import org.apache.dubbo.registry.client.ServiceDiscoveryRegistry;
-import org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService;
- import static org.apache.dubbo.integration.Constants.MULTIPLE_CONFIG_CENTER_SERVICE_DISCOVERY_REGISTRY;
+ import static org.apache.dubbo.config.integration.Constants.MULTIPLE_CONFIG_CENTER_SERVICE_DISCOVERY_REGISTRY;
@Activate(value = MULTIPLE_CONFIG_CENTER_SERVICE_DISCOVERY_REGISTRY)
diff --cc dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/ServiceDiscoveryRegistryInfoWrapper.java
index f513003,a5f35f8..be60e4e
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/ServiceDiscoveryRegistryInfoWrapper.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/ServiceDiscoveryRegistryInfoWrapper.java
@@@ -14,10 -14,10 +14,10 @@@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
- package org.apache.dubbo.integration.multiple.servicediscoveryregistry;
+ package org.apache.dubbo.config.integration.multiple.servicediscoveryregistry;
+import org.apache.dubbo.config.metadata.MetadataServiceDelegation;
import org.apache.dubbo.registry.client.ServiceDiscoveryRegistry;
-import org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService;
/**
* The instance to wrap {@link org.apache.dubbo.registry.client.ServiceDiscoveryRegistry}
diff --cc dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/SingleRegistryCenterDubboProtocolIntegrationTest.java
index fb76315,5b4b8dd..5f9f3f6
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/SingleRegistryCenterDubboProtocolIntegrationTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/SingleRegistryCenterDubboProtocolIntegrationTest.java
@@@ -38,11 -36,10 +37,10 @@@ import org.apache.dubbo.registry.client
import org.apache.dubbo.registry.client.migration.MigrationInvoker;
import org.apache.dubbo.registry.support.RegistryManager;
import org.apache.dubbo.registry.zookeeper.ZookeeperServiceDiscovery;
- import org.apache.dubbo.registrycenter.RegistryCenter;
- import org.apache.dubbo.registrycenter.ZookeeperSingleRegistryCenter;
import org.apache.dubbo.rpc.cluster.Directory;
import org.apache.dubbo.rpc.model.ApplicationModel;
+ import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --cc dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/spring/dubbo-consumer.xml
index e8c9521,a89803c..d04700d
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/spring/dubbo-consumer.xml
+++ b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/spring/dubbo-consumer.xml
@@@ -26,8 -26,12 +26,12 @@@
<dubbo:metadata-report address="zookeeper://127.0.0.1:2181"/>
- <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
+ <dubbo:registry id="demo1" address="zookeeper://127.0.0.1:2181?registry-type=service"/>
+ <dubbo:protocol name="dubbo" port="-1"/>
+ <dubbo:protocol name="rest" port="-1"/>
+ <dubbo:protocol name="tri" port="-1"/>
+
<dubbo:reference id="demoService" check="false"
interface="org.apache.dubbo.demo.DemoService"/>
diff --cc dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataInfo.java
index 5221ed2,3c3a614..38f103e
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataInfo.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataInfo.java
@@@ -85,42 -76,36 +85,46 @@@ public class MetadataInfo implements Se
this.revision = revision;
this.services = services == null ? new ConcurrentHashMap<>() : services;
this.extendParams = new ConcurrentHashMap<>();
+ this.instanceParams = new ConcurrentHashMap<>();
}
- public void addService(ServiceInfo serviceInfo) {
- if (serviceInfo == null) {
- return;
- }
+ public synchronized void addService(URL url) {
+ // fixme, pass in application mode context during initialization of MetadataInfo.
+ this.loader = url.getOrDefaultApplicationModel().getExtensionLoader(MetadataParamsFilter.class);
+ List<MetadataParamsFilter> filters = loader.getActivateExtension(url, "params-filter");
+ // generate service level metadata
+ ServiceInfo serviceInfo = new ServiceInfo(url, filters);
this.services.put(serviceInfo.getMatchKey(), serviceInfo);
- markChanged();
- }
+ // extract common instance level params
+ extractInstanceParams(url, filters);
- public void removeService(ServiceInfo serviceInfo) {
- if (serviceInfo == null) {
- return;
+ if (exportedServiceURLs == null) {
+ exportedServiceURLs = new ConcurrentSkipListMap<>();
}
- this.services.remove(serviceInfo.getMatchKey());
- markChanged();
+ addURL(exportedServiceURLs, url);
+ updated.compareAndSet(false, true);
}
- public void removeService(String key) {
- if (key == null) {
+ public synchronized void removeService(URL url) {
+ if (url == null) {
return;
}
- this.services.remove(key);
- markChanged();
+ this.services.remove(url.getProtocolServiceKey());
+ if (exportedServiceURLs != null) {
+ removeURL(exportedServiceURLs, url);
+ }
+
+ updated.compareAndSet(false, true);
+ }
+
+ public String getRevision() {
+ return revision;
}
+ public String getRevision() {
+ return revision;
+ }
+
/**
* Reported status and metadata modification must be synchronized if used in multiple threads.
*/
diff --cc dubbo-metadata/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReport.java
index 3a7f116,23e866a..e22fa59
--- a/dubbo-metadata/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReport.java
+++ b/dubbo-metadata/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReport.java
@@@ -34,13 -39,8 +39,7 @@@ import org.apache.dubbo.metadata.report
import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;
import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;
import org.apache.dubbo.metadata.report.support.AbstractMetadataReport;
-import org.apache.dubbo.rpc.RpcException;
- import com.alibaba.nacos.api.NacosFactory;
- import com.alibaba.nacos.api.PropertyKeyConst;
- import com.alibaba.nacos.api.config.listener.AbstractSharedListener;
- import com.alibaba.nacos.api.exception.NacosException;
- import com.google.gson.Gson;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
diff --cc dubbo-metadata/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java
index 9c07dbb,86732aa..28873d7
--- a/dubbo-metadata/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java
+++ b/dubbo-metadata/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java
@@@ -30,12 -29,9 +31,10 @@@ import org.apache.dubbo.metadata.report
import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;
import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
- import com.google.gson.Gson;
- import org.apache.curator.test.TestingServer;
- import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
+ import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import java.util.Arrays;
diff --cc dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java
index a191826,f7f5aaa..cdfbf78
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java
@@@ -130,16 -140,23 +130,19 @@@ public class ServiceInstancesChangedLis
String revision = entry.getKey();
List<ServiceInstance> subInstances = entry.getValue();
ServiceInstance instance = selectInstance(subInstances);
- MetadataInfo metadata = getRemoteMetadata(revision, localServiceToRevisions, instance);
+ MetadataInfo metadata = serviceDiscovery.getRemoteMetadata(revision, instance);
+ parseMetadata(revision, metadata, localServiceToRevisions);
// update metadata into each instance, in case new instance created.
for (ServiceInstance tmpInstance : subInstances) {
- ((DefaultServiceInstance) tmpInstance).setServiceMetadata(metadata);
+ MetadataInfo originMetadata = ((DefaultServiceInstance) tmpInstance).getServiceMetadata();
+ if (originMetadata == null || !Objects.equals(originMetadata.getRevision(), metadata.getRevision())) {
+ ((DefaultServiceInstance) tmpInstance).setServiceMetadata(metadata);
+ }
}
-// ((DefaultServiceInstance) instance).setServiceMetadata(metadata);
- newRevisionToMetadata.putIfAbsent(revision, metadata);
- }
-
- if (logger.isDebugEnabled()) {
- logger.debug(newRevisionToMetadata.size() + " unique revisions: " + newRevisionToMetadata.keySet());
}
- if (hasEmptyMetadata(newRevisionToMetadata)) {// retry every 10 seconds
+ if (hasEmptyMetadata(revisionToInstances)) {// retry every 10 seconds
+ hasEmptyMetadata = true;
if (retryPermission.tryAcquire()) {
if (retryFuture != null && !retryFuture.isDone()) {
// cancel last retryFuture because only one retryFuture will be canceled at destroy().
diff --cc dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilderTest.java
index 052e123,d69a6dd..b297f1c
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilderTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilderTest.java
@@@ -64,9 -65,10 +66,10 @@@ public class StandardMetadataServiceURL
assertEquals(url.getGroup(), "test");
assertEquals(url.getSide(), "consumer");
assertEquals(url.getVersion(), "1.0.0");
- assertEquals(url.getParameters().get("getAndListenInstanceMetadata.1.callback"), "true");
+// assertEquals(url.getParameters().get("getAndListenInstanceMetadata.1.callback"), "true");
assertEquals(url.getParameters().get("reconnect"), "false");
assertEquals(url.getParameters().get("timeout"), "5000");
+ assertEquals(url.getApplicationModel(), ApplicationModel.defaultModel());
// test generateWithMetadata
urls = builder.build(serviceInstance);
diff --cc dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryTest.java
index dd7c4c5,aa54bd9..784d5ac
--- a/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryTest.java
+++ b/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryTest.java
@@@ -23,9 -24,10 +23,10 @@@ import org.apache.dubbo.registry.client
import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;
import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;
import org.apache.dubbo.rpc.model.ApplicationModel;
-import org.apache.dubbo.rpc.model.ScopeModelUtil;
+import org.apache.curator.test.TestingServer;
import org.junit.jupiter.api.AfterEach;
+ import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.internal.util.collections.Sets;
@@@ -59,15 -67,10 +64,11 @@@ public class ZookeeperServiceDiscoveryT
@BeforeEach
public void init() throws Exception {
- zkServerPort = getAvailablePort();
- zkServer = new TestingServer(zkServerPort, true);
- zkServer.start();
-
- this.registryUrl = URL.valueOf(zookeeperConnectionAddress1);
- registryUrl.setScopeModel(ApplicationModel.defaultModel());
- this.discovery = new ZookeeperServiceDiscovery();
- this.discovery.initialize(registryUrl);
+ this.registryUrl = URL.valueOf("zookeeper://127.0.0.1:" + zkServerPort);
+ ApplicationModel applicationModel = ApplicationModel.defaultModel();
+ applicationModel.getApplicationConfigManager().setApplication(new ApplicationConfig(SERVICE_NAME));
+ registryUrl.setScopeModel(applicationModel);
+ this.discovery = new ZookeeperServiceDiscovery(applicationModel, registryUrl);
}
@AfterEach
diff --cc dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtilsTest.java
index 11bfa06,71ad98f..1eec916
--- a/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtilsTest.java
+++ b/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtilsTest.java
@@@ -45,28 -38,17 +43,20 @@@ import static org.apache.dubbo.registry
* {@link CuratorFrameworkUtils} Test
*/
class CuratorFrameworkUtilsTest {
- private static TestingServer zkServer;
private static URL registryUrl;
+ private static String zookeeperConnectionAddress1;
+ private static MetadataReport metadataReport;
@BeforeAll
public static void init() throws Exception {
- int zkServerPort = getAvailablePort();
- zkServer = new TestingServer(zkServerPort, true);
- zkServer.start();
+ zookeeperConnectionAddress1 = System.getProperty("zookeeper.connection.address.1");
- registryUrl = URL.valueOf("zookeeper://127.0.0.1:" + zkServerPort);
+ registryUrl = URL.valueOf(zookeeperConnectionAddress1);
registryUrl.setScopeModel(ApplicationModel.defaultModel());
+
+ metadataReport = Mockito.mock(MetadataReport.class);
}
- @AfterAll
- public static void tearDown() throws Exception {
- zkServer.stop();
- }
-
-
@Test
void testBuildCuratorFramework() throws Exception {
CuratorFramework curatorFramework = CuratorFrameworkUtils.buildCuratorFramework(registryUrl);
diff --cc dubbo-test/dubbo-test-spring/src/main/java/org/apache/dubbo/test/spring/SpringXmlConfigTest.java
index 484940a,5530de7..7171b5d
--- a/dubbo-test/dubbo-test-spring/src/main/java/org/apache/dubbo/test/spring/SpringXmlConfigTest.java
+++ b/dubbo-test/dubbo-test-spring/src/main/java/org/apache/dubbo/test/spring/SpringXmlConfigTest.java
@@@ -21,10 -21,7 +21,8 @@@ import org.apache.dubbo.test.common.Sys
import org.apache.dubbo.test.common.api.DemoService;
import org.apache.dubbo.test.common.api.GreetingService;
import org.apache.dubbo.test.common.api.RestDemoService;
- import org.apache.dubbo.test.common.registrycenter.RegistryCenter;
- import org.apache.dubbo.test.common.registrycenter.ZookeeperSingleRegistryCenter;
import org.apache.dubbo.test.spring.context.MockSpringInitCustomizer;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
@@@ -35,25 -32,14 +33,21 @@@ import static org.apache.dubbo.common.c
public class SpringXmlConfigTest {
- private static RegistryCenter registryCenter;
+ private static ClassPathXmlApplicationContext providerContext;
+
@BeforeAll
public static void beforeAll() {
- registryCenter = new ZookeeperSingleRegistryCenter();
- registryCenter.startup();
DubboBootstrap.reset();
}
@AfterAll
public static void afterAll(){
DubboBootstrap.reset();
- registryCenter.shutdown();
+ providerContext.close();
+ }
+
+ private void startProvider() {
+ providerContext = new ClassPathXmlApplicationContext("/spring/dubbo-demo-provider.xml");
}
@Test