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:46 UTC

[dubbo] branch 3.0-metadata-refactor updated (1448ebe -> 6c68481)

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

liujun pushed a change to branch 3.0-metadata-refactor
in repository https://gitbox.apache.org/repos/asf/dubbo.git.


    from 1448ebe  Make sure instance refresh task can always be started.
     new e15d2ae  update demo
     add ef2c0b3  [3.0-Triple] Add WriteQueue for Triple (#9160)
     add 68381ba  Fix MD5Utils concurrent error (#9176)
     add 7c7ee62  Support upper case method (#9181)
     add 6f158a0  Avoid blocking on FrameworkModel during destroying (#9189)
     add 4efdb8f  [3.0] Fix testDoRetry failure on windows (#9169)
     add fa245c7  According to rfc3986, revise the logic of changing the authority in the URL (#9170)
     add efa6900  [3.0] Add connectivity validation, router snapshot (#9112)
     add 59ab2da  [3.0] Fix MetadataService referProxy error #9190 (#9191)
     add eaf2b3d  [3.0-Triple] Fix bad state error when method not found (#9198)
     add c5fc78f  Add get raw invokers in Directory Support (#9205)
     add ba173fd  lazy init attributes in URL (#9201)
     add d981788  change way to determine the port that metadata service will listen on (#9145)
     add c1f29cd  [3.0] Patch DefaultApplicationDeployer for delay exporting (#9183)
     add c6e4279  fix MetadataService port conflict (#9184)
     add 8273598  [3.0] Fix @DubboReference.consumer() lookup error (#9175)
     add 502f565  cancel last retryFuture, destory listener after each test (#9186)
     add 690d397  [3.0] Fix WelcomeLogoApplicationListener not triggered (#9192)
     add 295f2a7  Fix flaky due to annotation order (#9123)
     add c14347c  Catch deploy error, improve module start waiting (#9204)
     add 94e26b4  Add unit test for rpc-triple module (#9203)
     add b2d308a  enhance logs (#9214)
     add 942ba9f  [3.0] Pre-allocate map size in Directory (#9222)
     add c51c1e8  [3.0] Print consumerURL parameters in ServiceAddressURL (#9221)
     add 4ea9fea  [3.0] Cache hashCode of URL to improve hash performance (#9220)
     add 335bf5a  [3.0] Reduce object creation when getting extensions (#9218)
     add 57ab318  [3.0] Reduce array creation when routing (#9219)
     add b06e5c2  [Feature] Support the global registry center in unit tests (#9138)
     add bfef39b  [3.0] release CPU to run StreamObserver methods (#9226)
     add 0bb1098  Update Compressor.java (#9223)
     add 988c00f  Remove param directly return in RestService (#9233)
     add c1bb96a  Remove all method with param directly return in RestService (#9234)
     add 8a14fb3  [3.0] allocate invokers space at initial time of AbstractDirectory, fix ConnectivityValidationTest (#9211)
     add 3c62e94  optimize of ZookeeperDynamicConfigurationTest (#9215)
     add 61e778f  Clean dubbo-registry-consul and  dubbo-demo-xml-provider-backend module (#9224)
     add 3b9d6af  [3.0] Ignore configFile get from dynamicConfiguration if disabled (#9241)
     add 5a00ef4  InJvmInvoker copied RpcInvoker add targetServiceUniqueName (#9247)
     add 838493c  Fix netty ssl file leak (#9245)
     add fb569c4  Add dubbo spring boot demo (#9244)
     add a5f77c3  change zk server admin port to 1808x (#9269)
     add 4fa0aa5  revert zk config for demo (#9281)
     add 858f8a9  [3.0] Performance Optimization (#9282)
     add 2d1f1ef  Fix NPE when calculateState (#9287)
     add 3469842  perf: Clear all TestingServer and replace it with global registry center. (#9231)
     add 9f8ee68  [3.0] revert AbstractConfiguratorListener#genConfiguratorsFromRawRule (#9248)
     add 83c466e  Unify the constants into Constants class and abstract the statistical array into StatisticsItem (#9253)
     add 837fb4a  [3.0] Fix flaky tests caused by java getDeclaredAnnotations() (#9240)
     add a1742da  Fix config-center includeSpringEnv #9207 (#9266)
     add 0ae2ccc  optimization MigrationInvoker promotion (#9270) (#9271)
     add f69c2f3  Fix nacos registry memory leak (#9261)
     add b662264  Fix the problem of InvokeTelnet that user use [invoke sayHello(xxx)] without executing the cd command first (#9260)
     add e6249b3  Optimize the code for a qos module and add unit test (#9275)
     add f0f760c  optimize annotation (#9277)
     add 67322ae  [3.0] Fix issue where dead connections would not be reconnected. (#9279)
     add 4c443d9a fix wrong class name in package extension/ext6_wrap (#9280)
     add fa675d4  fix: Fix the bug of downloading zk binary file (#9274)
     add a70363e  Add unit test for common-module and fix unregisterProvider method (#9288)
     add cb34c92  [3.0] Limit the maximum number of lines for the clear command (#9289)
     add 3cceefa  Add test case for TripleProtocolTest and add unit test for [Unary]ClintStream, AbstractStream (#9236)
     add b66509e  [3.0] Refactor State Router (#9228)
     add 686d357  [3.0] Ensure Concurrent Safe of Model & Change MetadataParamsFilter scope (#9309)
     add cccd069  Revert MetadataParamsFilter Scope (#9311)
     add 24bb3d9  Change to ConcurrentHashMap for CacheableFailbackRegistry (#9313)
     add 16319c5  Add ScopeModel Constructor for Config (#9314)
     add a72123a  Add unit test for FrameworkModel/ApplicationModel/ModuleModel and add test case for ConfigManager (#9301)
     add 98c8602  perf: Optimize the code on global zookeeper (#9302)
     add 6f38fa6  fix: custom registry port (#9298)
     add f459584  Add unit test for common-module (#9304)
     add ef4cb63  Update Hessian Lite Version (#9326)
     add 14a1d2e  Including setup method to clean state between tests (#9265)
     add 06b34dd  Fix the problem that Curator[5]ZookeeperClient does not handle RegistryConfig#session value (#9317)
     add 58c54c3  fix #9318 (#9321)
     add ab26f9e  optimize of DefaultFilterChainBuilder (#9324)
     add 438b906  Remove duplicate code of ProviderConfig (#9325)
     add 5349c13  Reduce memory allocation in ServiceDiscovery (#9328)
     add 43d46d9  [3.0] Opt ServiceInstance Memory Usage (#9331)
     add 72c8cba  Add system properties to support allow non-serializable class (#9340)
     add 503563b  revert invoker check failed log (#9345)
     add 8f66013  Remove unused Tri Header Enum (#9344)
     add bc8cb85  set super class of AvailableCluster to AbstractCluster (#9351)
     add 3b0038b  fix UnsafeStringWriter constructor (#9353)
     add 1908a38  delete duplicate code (#9356)
     add 4226442  Use existing methods to generate serviceKey for SimpleReferenceCache (#9333)
     add 8a7c360  remove StdErrLog from JettyHttpServer (#9052)
     new 084113a  Merge branch '3.0' into 3.0-metadata-refactor-merged
     new a51bc86  fix merge conflicts
     new 6c68481  Merge branch '3.0-metadata-refactor-merged' into 3.0-metadata-refactor

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .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 +++++
 .../reporter/MockFrameworkStatusReporter.java      |  22 +-
 .../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 |  32 +-
 .../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 |  47 +-
 ...ceDiscoveryRegistryRegistryServiceListener.java |   4 +-
 ...istryCenterServiceDiscoveryRegistryService.java |   2 +-
 ...yCenterServiceDiscoveryRegistryServiceImpl.java |   2 +-
 .../ServiceDiscoveryRegistryInfoWrapper.java       |   2 +-
 .../ServiceDiscoveryRegistryStorage.java           |   4 +-
 ...RegistryCenterDubboProtocolIntegrationTest.java |  24 +-
 ...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 +-
 .../dubbo/config/mock/MockServiceDiscovery.java    |   4 +-
 .../metadata/MetadataServiceExporterTest.java      | 435 +++++++++---------
 .../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 +-
 .../spring/registry/MockServiceDiscovery.java      |   4 +-
 .../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 --
 .../src/main/resources/spring/dubbo-provider.xml   |   8 +-
 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 -
 .../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/AbstractServiceDiscovery.java  |  63 +--
 .../registry/client/DefaultServiceInstance.java    |  76 +++-
 .../dubbo/registry/client/InstanceAddressURL.java  |   6 +-
 .../dubbo/registry/client/NopServiceDiscovery.java |   2 +-
 .../client/ServiceDiscoveryRegistryDirectory.java  |  47 +-
 .../dubbo/registry/client/ServiceInstance.java     |  15 +-
 .../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 +-
 .../client/support/MockServiceDiscovery.java       |   4 +-
 .../registry/support/FailbackRegistryTest.java     |  38 +-
 .../multicast/MulticastServiceDiscovery.java       |   4 +-
 dubbo-registry/dubbo-registry-multiple/pom.xml     |   5 -
 .../multiple/MultipleRegistry2S2RTest.java         |  61 +--
 .../apache/dubbo/registry/nacos/NacosRegistry.java |  45 +-
 .../registry/nacos/NacosServiceDiscovery.java      |   2 +-
 .../registry/nacos/NacosServiceDiscoveryTest.java  |   2 +-
 dubbo-registry/dubbo-registry-zookeeper/pom.xml    |   5 -
 .../zookeeper/ZookeeperServiceDiscovery.java       |   2 +-
 .../registry/zookeeper/ZookeeperRegistryTest.java  |  24 +-
 .../zookeeper/ZookeeperServiceDiscoveryTest.java   |  18 +-
 .../zookeeper/util/CuratorFrameworkUtilsTest.java  |  17 +-
 .../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 +-
 544 files changed, 12666 insertions(+), 6254 deletions(-)
 create mode 100644 dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/RouterResult.java
 create mode 100644 dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/RouterSnapshotNode.java
 rename dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/{ConditionRouter.java => ConditionStateRouter.java} (87%)
 rename dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/{ConditionRouterFactory.java => ConditionStateRouterFactory.java} (70%)
 copy dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/{AppRouter.java => AppStateRouter.java} (92%)
 rename dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/{AppRouterFactory.java => AppStateRouterFactory.java} (76%)
 rename dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/{ListenableRouter.java => ListenableStateRouter.java} (71%)
 rename dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/{ServiceRouterFactory.java => ServiceStateRouterFactory.java} (76%)
 rename dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/file/{FileRouterFactory.java => FileStateRouterFactory.java} (80%)
 rename dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/{MockRouterFactory.java => MockStateRouterFactory.java} (76%)
 rename dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/{ScriptRouter.java => ScriptStateRouter.java} (79%)
 rename dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/{ScriptRouterFactory.java => ScriptStateRouterFactory.java} (81%)
 delete mode 100644 dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/state/RouterCache.java
 rename dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/state/{AddrCache.java => StateRouterResult.java} (50%)
 delete mode 100644 dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagDynamicStateRouter.java
 rename dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/{TagRouter.java => TagStateRouter.java} (77%)
 rename dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/{TagStaticStateRouterFactory.java => TagStateRouterFactory.java} (79%)
 delete mode 100644 dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStaticStateRouter.java
 rename dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/script/{ScriptRouterTest.java => ScriptStateRouterTest.java} (69%)
 create mode 100644 dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/ConnectivityValidationTest.java
 delete mode 100644 dubbo-cluster/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.RouterFactory
 create mode 100644 dubbo-cluster/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
 create mode 100644 dubbo-common/src/test/java/org/apache/dubbo/common/CommonScopeModelInitializerTest.java
 copy dubbo-common/src/test/java/org/apache/dubbo/common/config/{PropertiesConfigurationTest.java => ConfigurationCacheTest.java} (69%)
 copy dubbo-common/src/test/java/org/apache/dubbo/common/config/{PropertiesConfigurationTest.java => OrderedPropertiesConfigurationTest.java} (92%)
 rename dubbo-common/src/test/java/org/apache/dubbo/common/extension/ext6_wrap/impl/{Ext5Impl1.java => Ext6Impl1.java} (92%)
 rename dubbo-common/src/test/java/org/apache/dubbo/common/extension/ext6_wrap/impl/{Ext5Impl2.java => Ext6Impl2.java} (92%)
 copy dubbo-common/src/test/java/org/apache/dubbo/common/extension/ext6_wrap/impl/{Ext5Wrapper1.java => Ext6Wrapper1.java} (92%)
 rename dubbo-common/src/test/java/org/apache/dubbo/common/extension/ext6_wrap/impl/{Ext5Wrapper2.java => Ext6Wrapper2.java} (92%)
 create mode 100644 dubbo-common/src/test/java/org/apache/dubbo/common/extension/inject/AdaptiveExtensionInjectorTest.java
 create mode 100644 dubbo-common/src/test/java/org/apache/dubbo/common/resource/GlobalResourcesRepositoryTest.java
 create mode 100644 dubbo-common/src/test/java/org/apache/dubbo/common/status/reporter/FrameworkStatusReportServiceTest.java
 copy dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/single/injvm/SingleRegistryCenterInjvmServiceImpl.java => dubbo-common/src/test/java/org/apache/dubbo/common/status/reporter/MockFrameworkStatusReporter.java (66%)
 create mode 100644 dubbo-common/src/test/java/org/apache/dubbo/common/utils/ClassLoaderResourceLoaderTest.java
 create mode 100644 dubbo-common/src/test/java/org/apache/dubbo/common/utils/MD5UtilsTest.java
 copy dubbo-common/src/test/java/org/apache/dubbo/{common/config/PropertiesConfigurationTest.java => config/context/ConfigConfigurationAdapterTest.java} (54%)
 create mode 100644 dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ApplicationModelTest.java
 create mode 100644 dubbo-common/src/test/java/org/apache/dubbo/rpc/model/FrameworkModelTest.java
 create mode 100644 dubbo-common/src/test/java/org/apache/dubbo/rpc/model/FrameworkServiceRepositoryTest.java
 create mode 100644 dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ModuleModelTest.java
 create mode 100644 dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ModuleServiceRepositoryTest.java
 create mode 100644 dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ScopeModelAwareExtensionProcessorTest.java
 create mode 100644 dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ScopeModelUtilTest.java
 create mode 100644 dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ServiceRepositoryTest.java
 copy dubbo-common/src/test/java/org/apache/dubbo/{common/config/CompositeConfigurationTest.java => rpc/support/DemoService.java} (88%)
 copy dubbo-common/src/test/java/org/apache/dubbo/{common/config/CompositeConfigurationTest.java => rpc/support/DemoServiceImpl.java} (81%)
 create mode 100644 dubbo-common/src/test/java/org/apache/dubbo/rpc/support/MockScopeModelAware.java
 copy dubbo-common/src/{main/java/org/apache/dubbo/common/beans/ScopeBeanExtensionInjector.java => test/java/org/apache/dubbo/rpc/support/MockScopeModelDestroyListener.java} (60%)
 create mode 100644 dubbo-common/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.common.status.reporter.FrameworkStatusReporter
 copy dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/src/main/resources/spring/dubbo-provider.properties => dubbo-common/src/test/resources/dubbo-migration.yaml (88%)
 copy dubbo-config/{dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/SpringScopeModelInitializer.java => dubbo-config-api/src/test/java/org/apache/dubbo/config/ConfigScopeModelInitializerTest.java} (54%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/AbstractRegistryCenterExporterListener.java (98%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/AbstractRegistryCenterServiceListener.java (97%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/Constants.java (95%)
 copy dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/IntegrationTest.java (95%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/AbstractStorage.java (97%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/Storage.java (97%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/exportmetadata/MultipleRegistryCenterExportMetadataExporterListener.java (89%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/exportmetadata/MultipleRegistryCenterExportMetadataIntegrationTest.java (90%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/exportmetadata/MultipleRegistryCenterExportMetadataService.java (93%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/exportmetadata/MultipleRegistryCenterExportMetadataServiceImpl.java (94%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/exportmetadata/MultipleRegistryCenterExportMetadataServiceListener.java (89%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderExporterListener.java (89%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderFilter.java (97%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderIntegrationTest.java (92%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderRegistryProtocolListener.java (97%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderService.java (93%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderServiceImpl.java (94%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderServiceListener.java (89%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/injvm/MultipleRegistryCenterInjvmExporterListener.java (89%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/injvm/MultipleRegistryCenterInjvmFilter.java (97%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/injvm/MultipleRegistryCenterInjvmIntegrationTest.java (89%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/injvm/MultipleRegistryCenterInjvmService.java (94%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/injvm/MultipleRegistryCenterInjvmServiceImpl.java (94%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/injvm/MultipleRegistryCenterInjvmServiceListener.java (89%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/package-info.java (95%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java (85%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryRegistryServiceListener.java (96%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryService.java (93%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryServiceImpl.java (93%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/servicediscoveryregistry/ServiceDiscoveryRegistryInfoWrapper.java (96%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/multiple/servicediscoveryregistry/ServiceDiscoveryRegistryStorage.java (87%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/SingleRegistryCenterDubboProtocolIntegrationTest.java (95%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/SingleRegistryCenterExportedServiceListener.java (90%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/SingleRegistryCenterIntegrationService.java (94%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/SingleRegistryCenterIntegrationServiceImpl.java (96%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/exportmetadata/SingleRegistryCenterExportMetadataExporterListener.java (89%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/exportmetadata/SingleRegistryCenterExportMetadataIntegrationTest.java (90%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/exportmetadata/SingleRegistryCenterExportMetadataService.java (93%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/exportmetadata/SingleRegistryCenterExportMetadataServiceImpl.java (94%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/exportmetadata/SingleRegistryCenterExportMetadataServiceListener.java (89%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/exportprovider/SingleRegistryCenterExportProviderExporterListener.java (89%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/exportprovider/SingleRegistryCenterExportProviderFilter.java (97%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/exportprovider/SingleRegistryCenterExportProviderIntegrationTest.java (92%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/exportprovider/SingleRegistryCenterExportProviderRegistryProtocolListener.java (93%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/exportprovider/SingleRegistryCenterExportProviderService.java (93%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/exportprovider/SingleRegistryCenterExportProviderServiceImpl.java (94%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/exportprovider/SingleRegistryCenterExportProviderServiceListener.java (89%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/injvm/SingleRegistryCenterInjvmExporterListener.java (89%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/injvm/SingleRegistryCenterInjvmFilter.java (97%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/injvm/SingleRegistryCenterInjvmIntegrationTest.java (90%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/injvm/SingleRegistryCenterInjvmService.java (94%)
 copy dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/injvm/SingleRegistryCenterInjvmServiceImpl.java (95%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/injvm/SingleRegistryCenterInjvmServiceListener.java (89%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{ => config}/integration/single/package-info.java (95%)
 delete mode 100644 dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/registrycenter/AbstractRegistryCenter.java
 delete mode 100644 dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/registrycenter/RegistryCenter.java
 delete mode 100644 dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/registrycenter/ZookeeperMultipleRegistryCenter.java
 delete mode 100644 dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/registrycenter/ZookeeperRegistryCenter.java
 create mode 100644 dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue9172/MultipleConsumerAndProviderTest.java
 create mode 100644 dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue9207/ConfigCenterBeanTest.java
 delete mode 100644 dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registrycenter/AbstractRegistryCenter.java
 delete mode 100644 dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registrycenter/RegistryCenter.java
 delete mode 100644 dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registrycenter/ZookeeperMultipleRegistryCenter.java
 delete mode 100644 dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registrycenter/ZookeeperRegistryCenter.java
 delete mode 100644 dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registrycenter/ZookeeperSingleRegistryCenter.java
 create mode 100644 dubbo-config/dubbo-config-spring/src/test/resources/META-INF/issues/issue9172/consumer.properties
 create mode 100644 dubbo-config/dubbo-config-spring/src/test/resources/META-INF/issues/issue9172/provider.properties
 copy dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/src/main/resources/spring/dubbo-provider.properties => dubbo-config/dubbo-config-spring/src/test/resources/META-INF/issues/issue9207/dubbo-properties-in-configcenter.properties (80%)
 copy dubbo-demo/{dubbo-demo-xml/dubbo-demo-xml-provider-backend => dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer}/pom.xml (64%)
 create mode 100644 dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/src/main/java/org/apache/dubbo/springboot/demo/consumer/ConsumerApplication.java
 create mode 100644 dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/src/main/resources/application.yml
 rename dubbo-demo/{dubbo-demo-xml/dubbo-demo-xml-provider-backend => dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer}/src/main/resources/log4j.properties (100%)
 copy {dubbo-test/dubbo-test-check => dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-interface}/pom.xml (68%)
 copy dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/RevisionResolver.java => dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-interface/src/main/java/org/apache/dubbo/springboot/demo/DemoService.java (73%)
 rename dubbo-demo/{dubbo-demo-xml/dubbo-demo-xml-provider-backend => dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider}/pom.xml (64%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/single/injvm/SingleRegistryCenterInjvmServiceImpl.java => dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/java/org/apache/dubbo/springboot/demo/provider/DemoServiceImpl.java (66%)
 rename dubbo-demo/{dubbo-demo-xml/dubbo-demo-xml-provider-backend/src/main/java/org/apache/dubbo/demo/provider/chain/ChainApplication.java => dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/java/org/apache/dubbo/springboot/demo/provider/ProviderApplication.java} (60%)
 create mode 100644 dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/resources/application.yml
 copy {dubbo-test/dubbo-test-spring => dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider}/src/main/resources/log4j.properties (100%)
 copy {dubbo-test/dubbo-test-check => dubbo-demo/dubbo-demo-spring-boot}/pom.xml (66%)
 delete mode 100644 dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider-backend/src/main/java/org/apache/dubbo/demo/provider/chain/ChainServiceImpl.java
 delete mode 100644 dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider-backend/src/main/resources/dubbo.properties
 delete mode 100644 dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider-backend/src/main/resources/spring/dubbo-provider-chain.xml
 create mode 100644 dubbo-monitor/dubbo-monitor-default/src/main/java/org/apache/dubbo/monitor/dubbo/StatisticsItem.java
 create mode 100644 dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LiveTest.java
 rename dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouterFactory.java => dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/MockLivenessProbe.java (67%)
 create mode 100644 dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/PublishMetadataTest.java
 create mode 100644 dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/ReadyTest.java
 create mode 100644 dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/StartupTest.java
 create mode 100644 dubbo-plugin/dubbo-qos/src/test/resources/META-INF/services/org.apache.dubbo.qos.probe.LivenessProbe
 create mode 100644 dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/jetty/JettyLoggerAdapter.java
 create mode 100644 dubbo-remoting/dubbo-remoting-http/src/test/java/org/apache/dubbo/remoting/http/jetty/JettyLoggerAdapterTest.java
 create mode 100644 dubbo-remoting/dubbo-remoting-http/src/test/resources/log4j.xml
 create mode 100644 dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/CancellationContextTest.java
 copy dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/OnlineApp.java => dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleCommandOutBoundHandler.java (54%)
 create mode 100644 dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/WriteQueue.java
 copy dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/SpringScopeModelInitializer.java => dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/command/CancelQueueCommand.java (52%)
 create mode 100644 dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/command/DataQueueCommand.java
 copy dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/RevisionResolver.java => dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/command/FlushQueueCommand.java (71%)
 create mode 100644 dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/command/HeaderQueueCommand.java
 create mode 100644 dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/command/QueuedCommand.java
 create mode 100644 dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/command/TextDataQueueCommand.java
 create mode 100644 dubbo-rpc/dubbo-rpc-triple/src/test/java/org/apache/dubbo/rpc/protocol/tri/AbstractStreamTest.java
 create mode 100644 dubbo-rpc/dubbo-rpc-triple/src/test/java/org/apache/dubbo/rpc/protocol/tri/ClientStreamTest.java
 create mode 100644 dubbo-rpc/dubbo-rpc-triple/src/test/java/org/apache/dubbo/rpc/protocol/tri/GrpcDataDecoderTest.java
 create mode 100644 dubbo-rpc/dubbo-rpc-triple/src/test/java/org/apache/dubbo/rpc/protocol/tri/ServerStreamTest.java
 create mode 100644 dubbo-rpc/dubbo-rpc-triple/src/test/java/org/apache/dubbo/rpc/protocol/tri/SingleProtobufUtilsTest.java
 create mode 100644 dubbo-rpc/dubbo-rpc-triple/src/test/java/org/apache/dubbo/rpc/protocol/tri/TripleHttp2ClientResponseHandlerTest.java
 create mode 100644 dubbo-rpc/dubbo-rpc-triple/src/test/java/org/apache/dubbo/rpc/protocol/tri/WriteQueueTest.java
 create mode 100644 dubbo-rpc/dubbo-rpc-triple/src/test/java/org/apache/dubbo/rpc/protocol/tri/service/TriBuiltinServiceTest.java
 create mode 100644 dubbo-rpc/dubbo-rpc-triple/src/test/java/org/apache/dubbo/rpc/protocol/tri/service/TriHealthImplTest.java
 rename dubbo-common/src/test/java/org/apache/dubbo/common/extension/ext6_wrap/impl/Ext5Wrapper1.java => dubbo-rpc/dubbo-rpc-triple/src/test/java/org/apache/dubbo/rpc/protocol/tri/support/MockAbstractStreamImpl.java (56%)
 copy dubbo-rpc/dubbo-rpc-triple/src/test/java/org/apache/dubbo/rpc/protocol/tri/support/{IGreeterImpl.java => MockStreamObserver.java} (51%)
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/AbstractRegistryCenterTestExecutionListener.java
 rename dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagDynamicStateRouterFactory.java => dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/RegistryCenterFinished.java (54%)
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/RegistryCenterStarted.java
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/exception/DubboTestException.java
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/Config.java
 copy dubbo-common/src/test/java/org/apache/dubbo/common/config/CompositeConfigurationTest.java => dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/Context.java (85%)
 rename dubbo-test/{dubbo-test-common/src/main/java/org/apache/dubbo/test/common/registrycenter/ZookeeperSingleRegistryCenter.java => dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/GlobalRegistryCenter.java} (52%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/IntegrationTest.java => dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/Initializer.java (64%)
 rename dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppRouter.java => dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/Processor.java (62%)
 rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/registrycenter/ZookeeperSingleRegistryCenter.java => dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/RegistryCenter.java (58%)
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/ZookeeperRegistryCenter.java
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/config/ZookeeperConfig.java
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/config/ZookeeperRegistryCenterConfig.java
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/context/ZookeeperContext.java
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/context/ZookeeperWindowsContext.java
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/initializer/ConfigZookeeperInitializer.java
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/initializer/DownloadZookeeperInitializer.java
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/initializer/UnpackZookeeperInitializer.java
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/initializer/ZookeeperInitializer.java
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/processor/FindPidWindowsProcessor.java
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/processor/KillProcessWindowsProcessor.java
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/processor/ResetZookeeperProcessor.java
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/processor/StartZookeeperUnixProcessor.java
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/processor/StartZookeeperWindowsProcessor.java
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/processor/StopZookeeperUnixProcessor.java
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/processor/StopZookeeperWindowsProcessor.java
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/processor/ZookeeperUnixProcessor.java
 create mode 100644 dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/registrycenter/processor/ZookeeperWindowsProcessor.java
 delete mode 100644 dubbo-test/dubbo-test-common/src/main/java/org/apache/dubbo/test/common/EmbeddedZooKeeper.java
 delete mode 100644 dubbo-test/dubbo-test-common/src/main/java/org/apache/dubbo/test/common/ZooKeeperServer.java
 delete mode 100644 dubbo-test/dubbo-test-common/src/main/java/org/apache/dubbo/test/common/registrycenter/AbstractRegistryCenter.java
 delete mode 100644 dubbo-test/dubbo-test-common/src/main/java/org/apache/dubbo/test/common/registrycenter/RegistryCenter.java
 delete mode 100644 dubbo-test/dubbo-test-common/src/main/java/org/apache/dubbo/test/common/registrycenter/ZookeeperMultipleRegistryCenter.java
 delete mode 100644 dubbo-test/dubbo-test-common/src/main/java/org/apache/dubbo/test/common/registrycenter/ZookeeperRegistryCenter.java

[dubbo] 01/04: update demo

Posted by li...@apache.org.
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 e15d2ae8070fbc31150ae343c7df6eb17364b0ce
Author: ken.lj <ke...@gmail.com>
AuthorDate: Mon Dec 6 16:11:32 2021 +0800

    update demo
---
 .../src/main/resources/spring/dubbo-provider.xml                  | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/resources/spring/dubbo-provider.xml b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/resources/spring/dubbo-provider.xml
index 42d7ccd..60f1d93 100644
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/resources/spring/dubbo-provider.xml
+++ b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/resources/spring/dubbo-provider.xml
@@ -37,12 +37,12 @@
     <bean id="restDemoService" class="org.apache.dubbo.demo.provider.RestDemoServiceImpl"/>
     <bean id="tripleService" class="org.apache.dubbo.demo.provider.TripleServiceImpl"/>
 
-    <dubbo:service delay="500000" interface="org.apache.dubbo.demo.DemoService" timeout="3000" ref="demoService" registry="registry1" protocol="dubbo"/>
-    <dubbo:service delay="500000" version="1.0.0" group="greeting" timeout="5000" interface="org.apache.dubbo.demo.GreetingService"
+    <dubbo:service delay="5000" interface="org.apache.dubbo.demo.DemoService" timeout="3000" ref="demoService" registry="registry1" protocol="dubbo"/>
+    <dubbo:service delay="5000" version="1.0.0" group="greeting" timeout="5000" interface="org.apache.dubbo.demo.GreetingService"
                    ref="greetingService" protocol="dubbo"/>
-    <dubbo:service delay="500000" version="1.0.0" timeout="5000" interface="org.apache.dubbo.demo.RestDemoService"
+    <dubbo:service delay="5000" version="1.0.0" timeout="5000" interface="org.apache.dubbo.demo.RestDemoService"
                    ref="restDemoService" protocol="rest"/>
-    <dubbo:service delay="500000" version="1.0.0" timeout="5000" interface="org.apache.dubbo.demo.TripleService"
+    <dubbo:service delay="5000" version="1.0.0" timeout="5000" interface="org.apache.dubbo.demo.TripleService"
                    ref="tripleService" protocol="tri"/>
 
 </beans>

[dubbo] 02/04: Merge branch '3.0' into 3.0-metadata-refactor-merged

Posted by li...@apache.org.
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

[dubbo] 03/04: fix merge conflicts

Posted by li...@apache.org.
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 a51bc86e56f8ead3af069c9f9def2569e63eda4d
Author: ken.lj <ke...@gmail.com>
AuthorDate: Tue Dec 7 12:17:19 2021 +0800

    fix merge conflicts
---
 .../reporter/MockFrameworkStatusReporter.java      |  33 ++
 .../config/deploy/DefaultApplicationDeployer.java  |   6 +-
 .../dubbo/config/bootstrap/DubboBootstrapTest.java |   2 +-
 ...terServiceDiscoveryRegistryIntegrationTest.java |   6 +-
 ...RegistryCenterDubboProtocolIntegrationTest.java |   2 +-
 .../metadata/MetadataServiceExporterTest.java      | 252 ------------
 .../dubbo/config/mock/MockServiceDiscovery.java    |   4 +-
 .../metadata/MetadataServiceExporterTest.java      | 435 ++++++++++-----------
 .../spring/registry/MockServiceDiscovery.java      |   4 +-
 .../org/apache/dubbo/metadata/MetadataInfo.java    |   4 -
 .../registry/client/AbstractServiceDiscovery.java  |  63 +--
 .../dubbo/registry/client/NopServiceDiscovery.java |   2 +-
 .../dubbo/registry/client/ServiceInstance.java     |   5 +
 .../client/support/MockServiceDiscovery.java       |   4 +-
 .../multicast/MulticastServiceDiscovery.java       |   4 +-
 .../registry/nacos/NacosServiceDiscovery.java      |   2 +-
 .../registry/nacos/NacosServiceDiscoveryTest.java  |   2 +-
 .../zookeeper/ZookeeperServiceDiscovery.java       |   2 +-
 .../zookeeper/ZookeeperServiceDiscoveryTest.java   |   4 +-
 .../zookeeper/util/CuratorFrameworkUtilsTest.java  |   3 +-
 20 files changed, 309 insertions(+), 530 deletions(-)

diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/status/reporter/MockFrameworkStatusReporter.java b/dubbo-common/src/test/java/org/apache/dubbo/common/status/reporter/MockFrameworkStatusReporter.java
new file mode 100644
index 0000000..5e2af5f
--- /dev/null
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/status/reporter/MockFrameworkStatusReporter.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.dubbo.common.status.reporter;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class MockFrameworkStatusReporter implements FrameworkStatusReporter {
+    Map<String, Object> reportContent = new HashMap<>();
+
+    @Override
+    public void report(String type, Object obj) {
+        reportContent.put(type, obj);
+    }
+
+    public Map<String, Object> getReportContent() {
+        return reportContent;
+    }
+}
diff --git 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
index b8ffa6f..c535209 100644
--- 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
@@ -825,11 +825,11 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
                 case FAILED:
                     Throwable error = null;
                     ModuleModel errorModule = null;
-                    for (ModuleModel moduleModel : applicationModel.getModuleModels()) {
-                        ModuleDeployer deployer = moduleModel.getDeployer();
+                    for (ModuleModel module : applicationModel.getModuleModels()) {
+                        ModuleDeployer deployer = module.getDeployer();
                         if (deployer.isFailed() && deployer.getError() != null) {
                             error = deployer.getError();
-                            errorModule = moduleModel;
+                            errorModule = module;
                             break;
                         }
                     }
diff --git 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
index 201991f..12e53fd 100644
--- 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
@@ -42,8 +42,8 @@ import org.apache.dubbo.registry.RegistryService;
 import org.apache.dubbo.rpc.Exporter;
 import org.apache.dubbo.rpc.model.ApplicationModel;
 import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;
+import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
 
-import org.apache.curator.test.TestingServer;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java
index 579d3e9..1c2b154 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java
@@ -24,11 +24,11 @@ import org.apache.dubbo.config.ReferenceConfig;
 import org.apache.dubbo.config.RegistryConfig;
 import org.apache.dubbo.config.ServiceConfig;
 import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+import org.apache.dubbo.config.integration.IntegrationTest;
 import org.apache.dubbo.config.metadata.MetadataServiceDelegation;
-import org.apache.dubbo.integration.IntegrationTest;
 import org.apache.dubbo.registry.RegistryServiceListener;
-import org.apache.dubbo.registrycenter.RegistryCenter;
-import org.apache.dubbo.registrycenter.ZookeeperMultipleRegistryCenter;
+import org.apache.dubbo.test.check.registrycenter.config.ZookeeperConfig;
+import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
 
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
diff --git 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
index 5f9f3f6..290c863 100644
--- 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
@@ -26,8 +26,8 @@ import org.apache.dubbo.config.RegistryConfig;
 import org.apache.dubbo.config.ServiceConfig;
 import org.apache.dubbo.config.ServiceListener;
 import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+import org.apache.dubbo.config.integration.IntegrationTest;
 import org.apache.dubbo.config.metadata.MetadataServiceDelegation;
-import org.apache.dubbo.integration.IntegrationTest;
 import org.apache.dubbo.metadata.MetadataInfo;
 import org.apache.dubbo.metadata.MetadataService;
 import org.apache.dubbo.registry.ListenerRegistryWrapper;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/MetadataServiceExporterTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/MetadataServiceExporterTest.java
deleted file mode 100644
index da704e4..0000000
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/MetadataServiceExporterTest.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.config.metadata;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.config.ApplicationConfig;
-import org.apache.dubbo.config.ProtocolConfig;
-import org.apache.dubbo.config.RegistryConfig;
-import org.apache.dubbo.config.ServiceConfig;
-import org.apache.dubbo.config.api.DemoService;
-import org.apache.dubbo.config.bootstrap.DubboBootstrap;
-import org.apache.dubbo.config.provider.impl.DemoServiceImpl;
-import org.apache.dubbo.metadata.MetadataService;
-import org.apache.dubbo.metadata.MetadataServiceExporter;
-import org.apache.dubbo.rpc.model.ApplicationModel;
-import org.apache.dubbo.rpc.model.FrameworkModel;
-import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
-
-import java.util.List;
-
-import static org.apache.dubbo.common.constants.CommonConstants.COMPOSITE_METADATA_STORAGE_TYPE;
-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;
-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_PROTOCOL;
-import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-/**
- * {@link MetadataServiceExporter} Test-Cases
- *
- * @since 2.7.8
- */
-public class MetadataServiceExporterTest {
-
-    @BeforeEach
-    public void init() {
-        DubboBootstrap.reset();
-
-        ApplicationConfig applicationConfig = new ApplicationConfig("Test");
-        applicationConfig.setRegisterConsumer(true);
-        ApplicationModel.defaultModel().getApplicationConfigManager().setApplication(applicationConfig);
-        ApplicationModel.defaultModel().getApplicationConfigManager().addRegistry(new RegistryConfig("multicast://224.5.6.7:1234"));
-        ApplicationModel.defaultModel().getApplicationConfigManager().addProtocol(new ProtocolConfig("injvm"));
-    }
-
-    @Test
-    public void test() {
-        MetadataService metadataService = Mockito.mock(MetadataService.class);
-        ConfigurableMetadataServiceExporter exporter = new ConfigurableMetadataServiceExporter();
-        exporter.setMetadataService(metadataService);
-        exporter.setApplicationModel(ApplicationModel.defaultModel());
-
-        exporter.export();
-        assertTrue(exporter.isExported());
-        exporter.unexport();
-
-        assertTrue(exporter.supports(DEFAULT_METADATA_STORAGE_TYPE));
-        assertTrue(exporter.supports(REMOTE_METADATA_STORAGE_TYPE));
-        assertTrue(exporter.supports(COMPOSITE_METADATA_STORAGE_TYPE));
-    }
-
-    @Test
-    public void test2() throws Exception {
-
-        ApplicationModel applicationModel = ApplicationModel.defaultModel();
-        ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) applicationModel.getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension();
-        MetadataService metadataService = Mockito.mock(MetadataService.class);
-        exporter.setMetadataService(metadataService);
-
-        applicationModel.getDeployer().start().get();
-        assertTrue(exporter.isExported());
-        assertTrue(exporter.supports(DEFAULT_METADATA_STORAGE_TYPE));
-        assertTrue(exporter.supports(REMOTE_METADATA_STORAGE_TYPE));
-        assertTrue(exporter.supports(COMPOSITE_METADATA_STORAGE_TYPE));
-
-        applicationModel.getDeployer().stop();
-        assertFalse(exporter.isExported());
-    }
-
-    /**
-     * test reuse of port started by normal service
-     */
-    @Test
-    public void testPortReuse() throws Exception {
-        DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
-        ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
-        serviceConfig.setInterface(DemoService.class);
-        serviceConfig.setRef(new DemoServiceImpl());
-
-        ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test");
-        applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE);
-
-        providerBootstrap
-            .application(applicationConfig)
-            .registry(registryConfig)
-            .protocol(new ProtocolConfig("dubbo", 2002))
-            .service(serviceConfig);
-
-        // will start exporter
-        providerBootstrap.start();
-        ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) providerBootstrap.getApplicationModel().getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension();
-
-        try {
-            assertTrue(exporter.isExported());
-            List<URL> urls = exporter.getExportedURLs();
-            assertNotNull(urls);
-            assertEquals(2002, urls.get(0).getPort());
-            assertEquals(DUBBO_PROTOCOL, urls.get(0).getProtocol());
-        } finally {
-            providerBootstrap.stop();
-        }
-        assertFalse(exporter.isExported());
-    }
-
-    /**
-     * test user specified port and protocol
-     * @throws Exception
-     */
-    @Test
-    public void testSpecifiedPortAndProtocol() throws Exception {
-        DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
-        ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
-        serviceConfig.setInterface(DemoService.class);
-        serviceConfig.setRef(new DemoServiceImpl());
-
-        ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test");
-        applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE);
-        applicationConfig.setMetadataServiceProtocol("tri");
-        applicationConfig.setMetadataServicePort(8089);
-
-        providerBootstrap
-            .application(applicationConfig)
-            .registry(registryConfig)
-            .protocol(new ProtocolConfig("dubbo", 2002))
-            .service(serviceConfig);
-
-        // will start exporter.export()
-        providerBootstrap.start();
-        ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) providerBootstrap.getApplicationModel().getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension();
-
-        try {
-            assertTrue(exporter.isExported());
-            List<URL> urls = exporter.getExportedURLs();
-            assertNotNull(urls);
-            assertEquals(8089, urls.get(0).getPort());
-            assertEquals("tri", urls.get(0).getProtocol());
-        } finally {
-            providerBootstrap.stop();
-        }
-        assertFalse(exporter.isExported());
-    }
-
-    @Test
-    public void testMetadataStartsBeforeNormalService() throws Exception {
-        DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
-        ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
-        serviceConfig.setInterface(DemoService.class);
-        serviceConfig.setRef(new DemoServiceImpl());
-        serviceConfig.setDelay(1000);
-
-        ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test");
-        applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE);
-//        applicationConfig.setMetadataServiceProtocol("triple");
-//        applicationConfig.setMetadataServicePort(8089);
-
-        providerBootstrap
-            .application(applicationConfig)
-            .registry(registryConfig)
-            .protocol(new ProtocolConfig("dubbo", 2002))
-            .service(serviceConfig);
-
-        // will start exporter.export()
-        providerBootstrap.start();
-        ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) providerBootstrap.getApplicationModel().getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension();
-
-        try {
-            assertTrue(exporter.isExported());
-            List<URL> urls = exporter.getExportedURLs();
-            assertNotNull(urls);
-            assertNotEquals(2002, urls.get(0).getPort());
-            assertEquals("dubbo", urls.get(0).getProtocol());
-        } finally {
-            providerBootstrap.stop();
-        }
-        assertFalse(exporter.isExported());
-    }
-//
-//    /**
-//     * test multiple protocols
-//     * @throws Exception
-//     */
-//    @Test
-//    public void testMultiProtocols() throws Exception {
-//        DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
-//        ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
-//        serviceConfig.setInterface(DemoService.class);
-//        serviceConfig.setRef(new DemoServiceImpl());
-//
-//        providerBootstrap
-//            .application("provider-app")
-//            .registry(registryConfig)
-//            .protocol(new ProtocolConfig("dubbo", 2002))
-//            .service(serviceConfig);
-//
-//        ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) applicationModel.getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension();
-//        MetadataService metadataService = Mockito.mock(MetadataService.class);
-//        exporter.setMetadataService(metadataService);
-//
-//        try {
-//            providerBootstrap.start();
-//            assertTrue(exporter.isExported());
-//            assertTrue(exporter.supports(DEFAULT_METADATA_STORAGE_TYPE));
-//            assertTrue(exporter.supports(REMOTE_METADATA_STORAGE_TYPE));
-//            assertTrue(exporter.supports(COMPOSITE_METADATA_STORAGE_TYPE));
-//        } finally {
-//            providerBootstrap.stop();
-//        }
-//        assertFalse(exporter.isExported());
-//    }
-
-    private static RegistryConfig registryConfig;
-
-    @BeforeAll
-    public static void beforeAll() {
-        FrameworkModel.destroyAll();
-        registryConfig = new RegistryConfig(ZookeeperRegistryCenterConfig.getConnectionAddress());
-        // pre-check threads
-        //precheckUnclosedThreads();
-    }
-
-}
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/MockServiceDiscovery.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/MockServiceDiscovery.java
index 2e8f204..11f584c 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/MockServiceDiscovery.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/MockServiceDiscovery.java
@@ -48,12 +48,12 @@ public class MockServiceDiscovery extends AbstractServiceDiscovery {
     }
 
     @Override
-    public void doUpdate() throws RuntimeException {
+    public void doUpdate(ServiceInstance serviceInstance) throws RuntimeException {
         this.serviceInstance = serviceInstance;
     }
 
     @Override
-    public void doUnregister() throws RuntimeException {
+    public void doUnregister(ServiceInstance serviceInstance) throws RuntimeException {
         this.serviceInstance = null;
     }
 
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/metadata/MetadataServiceExporterTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/metadata/MetadataServiceExporterTest.java
index f633e32..6e60131 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/metadata/MetadataServiceExporterTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/metadata/MetadataServiceExporterTest.java
@@ -14,244 +14,243 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.metadata;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.deploy.ApplicationDeployListener;
-import org.apache.dubbo.common.utils.NetUtils;
-import org.apache.dubbo.config.ApplicationConfig;
-import org.apache.dubbo.config.ProtocolConfig;
-import org.apache.dubbo.config.RegistryConfig;
-import org.apache.dubbo.config.ServiceConfig;
-import org.apache.dubbo.config.api.DemoService;
-import org.apache.dubbo.config.bootstrap.DubboBootstrap;
-import org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter;
-import org.apache.dubbo.config.metadata.ExporterDeployListener;
-import org.apache.dubbo.config.metadata.MetadataServiceDelegation;
-import org.apache.dubbo.config.provider.impl.DemoServiceImpl;
-import org.apache.dubbo.registrycenter.RegistryCenter;
-import org.apache.dubbo.registrycenter.ZookeeperSingleRegistryCenter;
-import org.apache.dubbo.rpc.model.ApplicationModel;
-import org.apache.dubbo.rpc.model.FrameworkModel;
-
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
-
-import java.util.List;
-
-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;
-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_PROTOCOL;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-public class MetadataServiceExporterTest {
-
-    @BeforeEach
-    public void init() {
-        DubboBootstrap.reset();
-
-        ApplicationConfig applicationConfig = new ApplicationConfig("Test");
-        applicationConfig.setRegisterConsumer(true);
-        ApplicationModel.defaultModel().getApplicationConfigManager().setApplication(applicationConfig);
-        ApplicationModel.defaultModel().getApplicationConfigManager().addRegistry(new RegistryConfig("multicast://224.5.6.7:1234"));
-        ApplicationModel.defaultModel().getApplicationConfigManager().addProtocol(new ProtocolConfig("injvm"));
-    }
-
-    @Test
-    public void test() {
-        MetadataServiceDelegation metadataService = Mockito.mock(MetadataServiceDelegation.class);
-        ConfigurableMetadataServiceExporter exporter = new ConfigurableMetadataServiceExporter(ApplicationModel.defaultModel(), metadataService);
-        exporter.setMetadataService(metadataService);
-
-        exporter.export();
-        assertTrue(exporter.isExported());
-        exporter.unexport();
-
-    }
-
-    @Test
-    public void test2() throws Exception {
-
-        ApplicationModel applicationModel = ApplicationModel.defaultModel();
-
-        applicationModel.getDeployer().start().get();
-        ExporterDeployListener listener = getListener(applicationModel);
-        ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter();
-
-        assertTrue(exporter.isExported());
-
-        applicationModel.getDeployer().stop();
-        assertFalse(exporter.isExported());
-    }
-
-    /**
-     * test reuse of port started by normal service
-     */
-    @Test
-    public void testPortReuse() throws Exception {
-        DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
-        ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
-        serviceConfig.setInterface(DemoService.class);
-        serviceConfig.setRef(new DemoServiceImpl());
-
-        ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test");
-        applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE);
-
-        providerBootstrap
-            .application(applicationConfig)
-            .registry(registryConfig)
-            .protocol(new ProtocolConfig("dubbo", 2002))
-            .service(serviceConfig);
-
-        // will start exporter
-        providerBootstrap.start();
-        ExporterDeployListener listener = getListener(providerBootstrap.getApplicationModel());
-        ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter();
-
-        try {
-            assertTrue(exporter.isExported());
-            List<URL> urls = exporter.getExportedURLs();
-            assertNotNull(urls);
-            assertEquals(2002, urls.get(0).getPort());
-            assertEquals(DUBBO_PROTOCOL, urls.get(0).getProtocol());
-        } finally {
-            providerBootstrap.stop();
-        }
-        assertFalse(exporter.isExported());
-    }
-
-    /**
-     * test user specified port and protocol
-     * @throws Exception
-     */
-    @Test
-    public void testSpecifiedPortAndProtocol() throws Exception {
-        DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
-        ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
-        serviceConfig.setInterface(DemoService.class);
-        serviceConfig.setRef(new DemoServiceImpl());
-
-        ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test");
-        applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE);
-        applicationConfig.setMetadataServiceProtocol("tri");
-        applicationConfig.setMetadataServicePort(8089);
-
-        providerBootstrap
-            .application(applicationConfig)
-            .registry(registryConfig)
-            .protocol(new ProtocolConfig("dubbo", 2002))
-            .service(serviceConfig);
-
-        // will start exporter.export()
-        providerBootstrap.start();
-        ExporterDeployListener listener = getListener(providerBootstrap.getApplicationModel());
-        ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter();
-
-        try {
-            assertTrue(exporter.isExported());
-            List<URL> urls = exporter.getExportedURLs();
-            assertNotNull(urls);
-            assertEquals(8089, urls.get(0).getPort());
-            assertEquals("tri", urls.get(0).getProtocol());
-        } finally {
-            providerBootstrap.stop();
-        }
-        assertFalse(exporter.isExported());
-    }
-
-    @Test
-    public void testMetadataStartsBeforeNormalService() throws Exception {
-        DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
-        ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
-        serviceConfig.setInterface(DemoService.class);
-        serviceConfig.setRef(new DemoServiceImpl());
-        serviceConfig.setDelay(1000);
-
-        ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test");
-        applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE);
-//        applicationConfig.setMetadataServiceProtocol("triple");
-//        applicationConfig.setMetadataServicePort(8089);
-
-        providerBootstrap
-            .application(applicationConfig)
-            .registry(registryConfig)
-            .protocol(new ProtocolConfig("dubbo", 2002))
-            .service(serviceConfig);
-
-        // will start exporter.export()
-        providerBootstrap.start();
-        ExporterDeployListener listener = getListener(providerBootstrap.getApplicationModel());
-        ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter();
-        try {
-            assertTrue(exporter.isExported());
-            List<URL> urls = exporter.getExportedURLs();
-            assertNotNull(urls);
-            assertNotEquals(2002, urls.get(0).getPort());
-            assertEquals("dubbo", urls.get(0).getProtocol());
-        } finally {
-            providerBootstrap.stop();
-        }
-        assertFalse(exporter.isExported());
-    }
+//package org.apache.dubbo.metadata;
+//
+//import org.apache.dubbo.common.URL;
+//import org.apache.dubbo.common.deploy.ApplicationDeployListener;
+//import org.apache.dubbo.common.utils.NetUtils;
+//import org.apache.dubbo.config.ApplicationConfig;
+//import org.apache.dubbo.config.ProtocolConfig;
+//import org.apache.dubbo.config.RegistryConfig;
+//import org.apache.dubbo.config.ServiceConfig;
+//import org.apache.dubbo.config.api.DemoService;
+//import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+//import org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter;
+//import org.apache.dubbo.config.metadata.ExporterDeployListener;
+//import org.apache.dubbo.config.metadata.MetadataServiceDelegation;
+//import org.apache.dubbo.config.provider.impl.DemoServiceImpl;
+//import org.apache.dubbo.rpc.model.ApplicationModel;
+//import org.apache.dubbo.rpc.model.FrameworkModel;
+//import org.apache.dubbo.test.check.registrycenter.RegistryCenter;
+//
+//import org.junit.jupiter.api.BeforeAll;
+//import org.junit.jupiter.api.BeforeEach;
+//import org.junit.jupiter.api.Test;
+//import org.mockito.Mockito;
+//
+//import java.util.List;
+//
+//import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;
+//import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_PROTOCOL;
+//import static org.junit.jupiter.api.Assertions.assertEquals;
+//import static org.junit.jupiter.api.Assertions.assertFalse;
+//import static org.junit.jupiter.api.Assertions.assertNotEquals;
+//import static org.junit.jupiter.api.Assertions.assertNotNull;
+//import static org.junit.jupiter.api.Assertions.assertTrue;
+//
+//public class MetadataServiceExporterTest {
+//
+//    @BeforeEach
+//    public void init() {
+//        DubboBootstrap.reset();
+//
+//        ApplicationConfig applicationConfig = new ApplicationConfig("Test");
+//        applicationConfig.setRegisterConsumer(true);
+//        ApplicationModel.defaultModel().getApplicationConfigManager().setApplication(applicationConfig);
+//        ApplicationModel.defaultModel().getApplicationConfigManager().addRegistry(new RegistryConfig("multicast://224.5.6.7:1234"));
+//        ApplicationModel.defaultModel().getApplicationConfigManager().addProtocol(new ProtocolConfig("injvm"));
+//    }
+//
+//    @Test
+//    public void test() {
+//        MetadataServiceDelegation metadataService = Mockito.mock(MetadataServiceDelegation.class);
+//        ConfigurableMetadataServiceExporter exporter = new ConfigurableMetadataServiceExporter(ApplicationModel.defaultModel(), metadataService);
+//        exporter.setMetadataService(metadataService);
+//
+//        exporter.export();
+//        assertTrue(exporter.isExported());
+//        exporter.unexport();
+//
+//    }
+//
+//    @Test
+//    public void test2() throws Exception {
+//
+//        ApplicationModel applicationModel = ApplicationModel.defaultModel();
+//
+//        applicationModel.getDeployer().start().get();
+//        ExporterDeployListener listener = getListener(applicationModel);
+//        ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter();
+//
+//        assertTrue(exporter.isExported());
+//
+//        applicationModel.getDeployer().stop();
+//        assertFalse(exporter.isExported());
+//    }
+//
+//    /**
+//     * test reuse of port started by normal service
+//     */
+//    @Test
+//    public void testPortReuse() throws Exception {
+//        DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
+//        ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
+//        serviceConfig.setInterface(DemoService.class);
+//        serviceConfig.setRef(new DemoServiceImpl());
+//
+//        ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test");
+//        applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE);
+//
+//        providerBootstrap
+//            .application(applicationConfig)
+//            .registry(registryConfig)
+//            .protocol(new ProtocolConfig("dubbo", 2002))
+//            .service(serviceConfig);
+//
+//        // will start exporter
+//        providerBootstrap.start();
+//        ExporterDeployListener listener = getListener(providerBootstrap.getApplicationModel());
+//        ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter();
+//
+//        try {
+//            assertTrue(exporter.isExported());
+//            List<URL> urls = exporter.getExportedURLs();
+//            assertNotNull(urls);
+//            assertEquals(2002, urls.get(0).getPort());
+//            assertEquals(DUBBO_PROTOCOL, urls.get(0).getProtocol());
+//        } finally {
+//            providerBootstrap.stop();
+//        }
+//        assertFalse(exporter.isExported());
+//    }
 //
 //    /**
-//     * test multiple protocols
+//     * test user specified port and protocol
 //     * @throws Exception
 //     */
 //    @Test
-//    public void testMultiProtocols() throws Exception {
+//    public void testSpecifiedPortAndProtocol() throws Exception {
 //        DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
 //        ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
 //        serviceConfig.setInterface(DemoService.class);
 //        serviceConfig.setRef(new DemoServiceImpl());
 //
+//        ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test");
+//        applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE);
+//        applicationConfig.setMetadataServiceProtocol("tri");
+//        applicationConfig.setMetadataServicePort(8089);
+//
 //        providerBootstrap
-//            .application("provider-app")
+//            .application(applicationConfig)
 //            .registry(registryConfig)
 //            .protocol(new ProtocolConfig("dubbo", 2002))
 //            .service(serviceConfig);
 //
-//        ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) applicationModel.getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension();
-//        MetadataService metadataService = Mockito.mock(MetadataService.class);
-//        exporter.setMetadataService(metadataService);
+//        // will start exporter.export()
+//        providerBootstrap.start();
+//        ExporterDeployListener listener = getListener(providerBootstrap.getApplicationModel());
+//        ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter();
+//
+//        try {
+//            assertTrue(exporter.isExported());
+//            List<URL> urls = exporter.getExportedURLs();
+//            assertNotNull(urls);
+//            assertEquals(8089, urls.get(0).getPort());
+//            assertEquals("tri", urls.get(0).getProtocol());
+//        } finally {
+//            providerBootstrap.stop();
+//        }
+//        assertFalse(exporter.isExported());
+//    }
 //
+//    @Test
+//    public void testMetadataStartsBeforeNormalService() throws Exception {
+//        DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
+//        ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
+//        serviceConfig.setInterface(DemoService.class);
+//        serviceConfig.setRef(new DemoServiceImpl());
+//        serviceConfig.setDelay(1000);
+//
+//        ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test");
+//        applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE);
+////        applicationConfig.setMetadataServiceProtocol("triple");
+////        applicationConfig.setMetadataServicePort(8089);
+//
+//        providerBootstrap
+//            .application(applicationConfig)
+//            .registry(registryConfig)
+//            .protocol(new ProtocolConfig("dubbo", 2002))
+//            .service(serviceConfig);
+//
+//        // will start exporter.export()
+//        providerBootstrap.start();
+//        ExporterDeployListener listener = getListener(providerBootstrap.getApplicationModel());
+//        ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter();
 //        try {
-//            providerBootstrap.start();
 //            assertTrue(exporter.isExported());
-//            assertTrue(exporter.supports(DEFAULT_METADATA_STORAGE_TYPE));
-//            assertTrue(exporter.supports(REMOTE_METADATA_STORAGE_TYPE));
-//            assertTrue(exporter.supports(COMPOSITE_METADATA_STORAGE_TYPE));
+//            List<URL> urls = exporter.getExportedURLs();
+//            assertNotNull(urls);
+//            assertNotEquals(2002, urls.get(0).getPort());
+//            assertEquals("dubbo", urls.get(0).getProtocol());
 //        } finally {
 //            providerBootstrap.stop();
 //        }
 //        assertFalse(exporter.isExported());
 //    }
-
-    private static ZookeeperSingleRegistryCenter registryCenter;
-    private static RegistryConfig registryConfig;
-
-    @BeforeAll
-    public static void beforeAll() {
-        FrameworkModel.destroyAll();
-        registryCenter = new ZookeeperSingleRegistryCenter(NetUtils.getAvailablePort());
-        registryCenter.startup();
-        RegistryCenter.Instance instance = registryCenter.getRegistryCenterInstance().get(0);
-        registryConfig = new RegistryConfig(String.format("%s://%s:%s",
-            instance.getType(),
-            instance.getHostname(),
-            instance.getPort()));
-
-        // pre-check threads
-        //precheckUnclosedThreads();
-    }
-
-    private ExporterDeployListener getListener(ApplicationModel model) {
-        return (ExporterDeployListener)model.getExtensionLoader(ApplicationDeployListener.class).getExtension("exporter");
-    }
-
-}
+////
+////    /**
+////     * test multiple protocols
+////     * @throws Exception
+////     */
+////    @Test
+////    public void testMultiProtocols() throws Exception {
+////        DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
+////        ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
+////        serviceConfig.setInterface(DemoService.class);
+////        serviceConfig.setRef(new DemoServiceImpl());
+////
+////        providerBootstrap
+////            .application("provider-app")
+////            .registry(registryConfig)
+////            .protocol(new ProtocolConfig("dubbo", 2002))
+////            .service(serviceConfig);
+////
+////        ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) applicationModel.getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension();
+////        MetadataService metadataService = Mockito.mock(MetadataService.class);
+////        exporter.setMetadataService(metadataService);
+////
+////        try {
+////            providerBootstrap.start();
+////            assertTrue(exporter.isExported());
+////            assertTrue(exporter.supports(DEFAULT_METADATA_STORAGE_TYPE));
+////            assertTrue(exporter.supports(REMOTE_METADATA_STORAGE_TYPE));
+////            assertTrue(exporter.supports(COMPOSITE_METADATA_STORAGE_TYPE));
+////        } finally {
+////            providerBootstrap.stop();
+////        }
+////        assertFalse(exporter.isExported());
+////    }
+//
+//    private static ZookeeperSingleRegistryCenter registryCenter;
+//    private static RegistryConfig registryConfig;
+//
+//    @BeforeAll
+//    public static void beforeAll() {
+//        FrameworkModel.destroyAll();
+//        registryCenter = new ZookeeperSingleRegistryCenter(NetUtils.getAvailablePort());
+//        registryCenter.startup();
+//        RegistryCenter.Instance instance = registryCenter.getRegistryCenterInstance().get(0);
+//        registryConfig = new RegistryConfig(String.format("%s://%s:%s",
+//            instance.getType(),
+//            instance.getHostname(),
+//            instance.getPort()));
+//
+//        // pre-check threads
+//        //precheckUnclosedThreads();
+//    }
+//
+//    private ExporterDeployListener getListener(ApplicationModel model) {
+//        return (ExporterDeployListener)model.getExtensionLoader(ApplicationDeployListener.class).getExtension("exporter");
+//    }
+//
+//}
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registry/MockServiceDiscovery.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registry/MockServiceDiscovery.java
index 085a57b..a5c5b3c 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registry/MockServiceDiscovery.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registry/MockServiceDiscovery.java
@@ -47,11 +47,11 @@ public class MockServiceDiscovery extends AbstractServiceDiscovery {
     }
 
     @Override
-    public void doUpdate() throws RuntimeException {
+    public void doUpdate(ServiceInstance serviceInstance) throws RuntimeException {
     }
 
     @Override
-    public void doUnregister() throws RuntimeException {
+    public void doUnregister(ServiceInstance serviceInstance) throws RuntimeException {
     }
 
     @Override
diff --git 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
index 38f103e..5221ed2 100644
--- 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
@@ -121,10 +121,6 @@ public class MetadataInfo implements Serializable {
         return revision;
     }
 
-    public String getRevision() {
-        return revision;
-    }
-
     /**
      * Reported status and metadata modification must be synchronized if used in multiple threads.
      */
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java
index ea67de6..ae2d16d 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java
@@ -44,7 +44,7 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery {
     private Logger logger = LoggerFactory.getLogger(AbstractServiceDiscovery.class);
     private volatile boolean isDestroy;
 
-    private final String serviceName;
+    protected final String serviceName;
     protected volatile ServiceInstance serviceInstance;
     protected volatile MetadataInfo metadataInfo;
     protected MetadataReport metadataReport;
@@ -52,7 +52,7 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery {
     protected MetaCacheManager metaCacheManager;
     protected URL registryURL;
 
-    private ApplicationModel applicationModel;
+    protected ApplicationModel applicationModel;
 
     public AbstractServiceDiscovery(ApplicationModel applicationModel, URL registryURL) {
         this(applicationModel.getApplicationName(), registryURL);
@@ -76,16 +76,16 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery {
         this.metaCacheManager = new MetaCacheManager(getCacheNameSuffix());
     }
 
-    public synchronized final void register() throws RuntimeException {
-        this.serviceInstance = createServiceInstance();
-        if (isValidInstance(serviceInstance)) {
+    public synchronized void register() throws RuntimeException {
+        this.serviceInstance = createServiceInstance(this.metadataInfo);
+        if (isValidInstance(this.serviceInstance)) {
             return;
         }
 
-        boolean revisionUpdated = calOrUpdateInstanceRevision();
+        boolean revisionUpdated = calOrUpdateInstanceRevision(this.serviceInstance);
         if (revisionUpdated) {
-            reportMetadata();
-            doRegister(serviceInstance);
+            reportMetadata(this.metadataInfo);
+            doRegister(this.serviceInstance);
         }
     }
 
@@ -95,37 +95,37 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery {
      * instance.
      */
     @Override
-    public synchronized final void update() throws RuntimeException {
+    public synchronized void update() throws RuntimeException {
         if (this.serviceInstance == null) {
-            this.serviceInstance = createServiceInstance();
-        } else if (!isValidInstance(serviceInstance)) {
-            ServiceInstanceMetadataUtils.customizeInstance(serviceInstance, applicationModel);
+            this.serviceInstance = createServiceInstance(this.metadataInfo);
+        } else if (!isValidInstance(this.serviceInstance)) {
+            ServiceInstanceMetadataUtils.customizeInstance(this.serviceInstance, this.applicationModel);
         }
 
-        if (!isValidInstance(serviceInstance)) {
+        if (!isValidInstance(this.serviceInstance)) {
             return;
         }
 
-        boolean revisionUpdated = calOrUpdateInstanceRevision();
+        boolean revisionUpdated = calOrUpdateInstanceRevision(this.serviceInstance);
         if (revisionUpdated) {
-            doUpdate();
+            doUpdate(this.serviceInstance);
         }
     }
 
     @Override
-    public synchronized final void unregister() throws RuntimeException {
-        unReportMetadata();
-        doUnregister();
+    public synchronized void unregister() throws RuntimeException {
+        unReportMetadata(this.metadataInfo);
+        doUnregister(this.serviceInstance);
     }
 
     @Override
     public final ServiceInstance getLocalInstance() {
-        return serviceInstance;
+        return this.serviceInstance;
     }
 
     @Override
     public MetadataInfo getMetadata() {
-        return metadataInfo;
+        return this.metadataInfo;
     }
 
     @Override
@@ -208,10 +208,10 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery {
        throw new UnsupportedOperationException("Service discovery implementation does not support lookup of url list.");
     }
 
-    public void doUpdate() throws RuntimeException {
+    protected void doUpdate(ServiceInstance serviceInstance) throws RuntimeException {
         this.unregister();
 
-        reportMetadata();
+        reportMetadata(serviceInstance.getServiceMetadata());
         this.doRegister(serviceInstance);
     }
 
@@ -220,13 +220,13 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery {
         return registryURL;
     }
 
-    public abstract void doRegister(ServiceInstance serviceInstance) throws RuntimeException;
+    protected abstract void doRegister(ServiceInstance serviceInstance) throws RuntimeException;
 
-    public abstract void doUnregister();
+    protected abstract void doUnregister(ServiceInstance serviceInstance);
 
-    public abstract void doDestroy() throws Exception;
+    protected abstract void doDestroy() throws Exception;
 
-    private ServiceInstance createServiceInstance() {
+    protected ServiceInstance createServiceInstance(MetadataInfo metadataInfo) {
         DefaultServiceInstance instance = new DefaultServiceInstance(serviceName, applicationModel);
         instance.setServiceMetadata(metadataInfo);
         setMetadataStorageType(instance, metadataType);
@@ -234,28 +234,29 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery {
         return instance;
     }
 
-    protected boolean calOrUpdateInstanceRevision() {
-        String existingInstanceRevision = serviceInstance.getMetadata().get(EXPORTED_SERVICES_REVISION_PROPERTY_NAME);
+    protected boolean calOrUpdateInstanceRevision(ServiceInstance instance) {
+        String existingInstanceRevision = instance.getMetadata().get(EXPORTED_SERVICES_REVISION_PROPERTY_NAME);
+        MetadataInfo metadataInfo = instance.getServiceMetadata();
         String newRevision = metadataInfo.calAndGetRevision();
         if (!newRevision.equals(existingInstanceRevision)) {
             if (EMPTY_REVISION.equals(newRevision)) {
                 logger.warn("No interface in metadata, will not register/update instance.");
                 return false;
             }
-            serviceInstance.getMetadata().put(EXPORTED_SERVICES_REVISION_PROPERTY_NAME, metadataInfo.calAndGetRevision());
+            instance.getMetadata().put(EXPORTED_SERVICES_REVISION_PROPERTY_NAME, metadataInfo.calAndGetRevision());
             return true;
         }
         return false;
     }
 
-    protected void reportMetadata() {
+    protected void reportMetadata(MetadataInfo metadataInfo) {
         if (metadataReport != null) {
             SubscriberMetadataIdentifier identifier = new SubscriberMetadataIdentifier(serviceName, metadataInfo.calAndGetRevision());
             metadataReport.publishAppMetadata(identifier, metadataInfo);
         }
     }
 
-    protected void unReportMetadata() {
+    protected void unReportMetadata(MetadataInfo metadataInfo) {
         if (metadataReport != null) {
             SubscriberMetadataIdentifier identifier = new SubscriberMetadataIdentifier(serviceName, metadataInfo.calAndGetRevision());
             metadataReport.unPublishAppMetadata(identifier, metadataInfo);
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/NopServiceDiscovery.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/NopServiceDiscovery.java
index 87638cf..7cf8d32 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/NopServiceDiscovery.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/NopServiceDiscovery.java
@@ -37,7 +37,7 @@ public class NopServiceDiscovery extends AbstractServiceDiscovery {
     }
 
     @Override
-    public void doUnregister() {
+    public void doUnregister(ServiceInstance serviceInstance) {
 
     }
 
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceInstance.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceInstance.java
index caa2ed7..aee23a6 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceInstance.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceInstance.java
@@ -16,6 +16,7 @@
  */
 package org.apache.dubbo.registry.client;
 
+import org.apache.dubbo.metadata.MetadataInfo;
 import org.apache.dubbo.rpc.model.ApplicationModel;
 import org.apache.dubbo.rpc.model.ScopeModelUtil;
 
@@ -131,6 +132,10 @@ public interface ServiceInstance extends Serializable {
         return getMetadata().getOrDefault(name, defaultValue);
     }
 
+    MetadataInfo getServiceMetadata();
+
+    void setServiceMetadata(MetadataInfo serviceMetadata);
+
     InstanceAddressURL toURL();
 
 }
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/support/MockServiceDiscovery.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/support/MockServiceDiscovery.java
index 42eb492..892acb0 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/support/MockServiceDiscovery.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/support/MockServiceDiscovery.java
@@ -40,12 +40,12 @@ public class MockServiceDiscovery extends AbstractServiceDiscovery {
     }
 
     @Override
-    public void doUpdate() throws RuntimeException {
+    public void doUpdate(ServiceInstance serviceInstance) throws RuntimeException {
 
     }
 
     @Override
-    public void doUnregister() {
+    public void doUnregister(ServiceInstance serviceInstance) {
 
     }
 
diff --git a/dubbo-registry/dubbo-registry-multicast/src/main/java/org/apache/dubbo/registry/multicast/MulticastServiceDiscovery.java b/dubbo-registry/dubbo-registry-multicast/src/main/java/org/apache/dubbo/registry/multicast/MulticastServiceDiscovery.java
index d5ba16b..97f91a3 100644
--- a/dubbo-registry/dubbo-registry-multicast/src/main/java/org/apache/dubbo/registry/multicast/MulticastServiceDiscovery.java
+++ b/dubbo-registry/dubbo-registry-multicast/src/main/java/org/apache/dubbo/registry/multicast/MulticastServiceDiscovery.java
@@ -47,11 +47,11 @@ public class MulticastServiceDiscovery extends AbstractServiceDiscovery {
     }
 
     @Override
-    public void doUpdate() throws RuntimeException {
+    public void doUpdate(ServiceInstance serviceInstance) throws RuntimeException {
     }
 
     @Override
-    public void doUnregister() throws RuntimeException {
+    public void doUnregister(ServiceInstance serviceInstance) throws RuntimeException {
         this.serviceInstance = null;
     }
 
diff --git a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java
index 9a8b2a7..bd020fc 100644
--- a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java
+++ b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java
@@ -77,7 +77,7 @@ public class NacosServiceDiscovery extends AbstractServiceDiscovery {
     }
 
     @Override
-    public void doUnregister() throws RuntimeException {
+    public void doUnregister(ServiceInstance serviceInstance) throws RuntimeException {
         execute(namingService, service -> {
             Instance instance = toInstance(serviceInstance);
             // Should not register real group for ServiceInstance
diff --git a/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryTest.java b/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryTest.java
index 61039b0..77cd1f6 100644
--- a/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryTest.java
+++ b/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryTest.java
@@ -135,7 +135,7 @@ public class NacosServiceDiscoveryTest {
         assertEquals(3, namingServiceWrapper.getAllInstances(anyString(), anyString()).size());
 
         // unRegister
-        nacosServiceDiscovery.doUnregister();
+        nacosServiceDiscovery.unregister();
     }
 
     @Test
diff --git a/dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscovery.java b/dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscovery.java
index 1a3a335..59099e4 100644
--- a/dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscovery.java
+++ b/dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscovery.java
@@ -94,7 +94,7 @@ public class ZookeeperServiceDiscovery extends AbstractServiceDiscovery {
     }
 
     @Override
-    public void doUnregister() throws RuntimeException {
+    public void doUnregister(ServiceInstance serviceInstance) throws RuntimeException {
         if (serviceInstance != null) {
             doInServiceRegistry(serviceDiscovery -> serviceDiscovery.unregisterService(build(serviceInstance)));
         }
diff --git 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
index 784d5ac..5cea0d2 100644
--- 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
@@ -24,7 +24,6 @@ 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.curator.test.TestingServer;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
@@ -37,7 +36,6 @@ import java.util.Map;
 import java.util.concurrent.CountDownLatch;
 
 import static java.util.Arrays.asList;
-import static org.apache.dubbo.common.utils.NetUtils.getAvailablePort;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
@@ -64,7 +62,7 @@ public class ZookeeperServiceDiscoveryTest {
 
     @BeforeEach
     public void init() throws Exception {
-        this.registryUrl = URL.valueOf("zookeeper://127.0.0.1:" + zkServerPort);
+        this.registryUrl = URL.valueOf(zookeeperConnectionAddress1);
         ApplicationModel applicationModel = ApplicationModel.defaultModel();
         applicationModel.getApplicationConfigManager().setApplication(new ApplicationConfig(SERVICE_NAME));
         registryUrl.setScopeModel(applicationModel);
diff --git 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
index 1eec916..04e2051 100644
--- 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
@@ -24,9 +24,7 @@ import org.apache.dubbo.registry.zookeeper.ZookeeperInstance;
 import org.apache.dubbo.rpc.model.ApplicationModel;
 
 import org.apache.curator.framework.CuratorFramework;
-import org.apache.curator.test.TestingServer;
 import org.apache.curator.x.discovery.ServiceDiscovery;
-import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
@@ -35,6 +33,7 @@ import org.mockito.Mockito;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+
 import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.EXPORTED_SERVICES_REVISION_PROPERTY_NAME;
 import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.METADATA_STORAGE_TYPE_PROPERTY_NAME;
 import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.ROOT_PATH;

[dubbo] 04/04: Merge branch '3.0-metadata-refactor-merged' into 3.0-metadata-refactor

Posted by li...@apache.org.
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 6c68481a0441d3ecfc4a3fd7227499eb8064b9b6
Merge: e15d2ae a51bc86
Author: ken.lj <ke...@gmail.com>
AuthorDate: Tue Dec 7 12:17:50 2021 +0800

    Merge branch '3.0-metadata-refactor-merged' into 3.0-metadata-refactor

 .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 +++++
 .../reporter/MockFrameworkStatusReporter.java      |  22 +-
 .../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 |  32 +-
 .../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 |  47 +-
 ...ceDiscoveryRegistryRegistryServiceListener.java |   4 +-
 ...istryCenterServiceDiscoveryRegistryService.java |   2 +-
 ...yCenterServiceDiscoveryRegistryServiceImpl.java |   2 +-
 .../ServiceDiscoveryRegistryInfoWrapper.java       |   2 +-
 .../ServiceDiscoveryRegistryStorage.java           |   4 +-
 ...RegistryCenterDubboProtocolIntegrationTest.java |  24 +-
 ...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 +-
 .../dubbo/config/mock/MockServiceDiscovery.java    |   4 +-
 .../metadata/MetadataServiceExporterTest.java      | 435 +++++++++---------
 .../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 +-
 .../spring/registry/MockServiceDiscovery.java      |   4 +-
 .../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 -
 .../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/AbstractServiceDiscovery.java  |  63 +--
 .../registry/client/DefaultServiceInstance.java    |  76 +++-
 .../dubbo/registry/client/InstanceAddressURL.java  |   6 +-
 .../dubbo/registry/client/NopServiceDiscovery.java |   2 +-
 .../client/ServiceDiscoveryRegistryDirectory.java  |  47 +-
 .../dubbo/registry/client/ServiceInstance.java     |  15 +-
 .../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 +-
 .../client/support/MockServiceDiscovery.java       |   4 +-
 .../registry/support/FailbackRegistryTest.java     |  38 +-
 .../multicast/MulticastServiceDiscovery.java       |   4 +-
 dubbo-registry/dubbo-registry-multiple/pom.xml     |   5 -
 .../multiple/MultipleRegistry2S2RTest.java         |  61 +--
 .../apache/dubbo/registry/nacos/NacosRegistry.java |  45 +-
 .../registry/nacos/NacosServiceDiscovery.java      |   2 +-
 .../registry/nacos/NacosServiceDiscoveryTest.java  |   2 +-
 dubbo-registry/dubbo-registry-zookeeper/pom.xml    |   5 -
 .../zookeeper/ZookeeperServiceDiscovery.java       |   2 +-
 .../registry/zookeeper/ZookeeperRegistryTest.java  |  24 +-
 .../zookeeper/ZookeeperServiceDiscoveryTest.java   |  18 +-
 .../zookeeper/util/CuratorFrameworkUtilsTest.java  |  17 +-
 .../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 +-
 543 files changed, 12662 insertions(+), 6250 deletions(-)