You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/08/31 17:09:10 UTC
[dubbo] branch 3.0-multi-instances updated (bdf30e6 -> 185a1d1)
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a change to branch 3.0-multi-instances
in repository https://gitbox.apache.org/repos/asf/dubbo.git.
from bdf30e6 add failback logic for ut
add d94e699 Fix nacos group inviable in consumer side (#8533)
add b5f657e fix NPE on serialization checking when request timed out (#8547)
add 8739374 Compact with dubbo-all without farbic-io (#8546)
add 5630a3c 修复monitor未配置时返回dubbo协议的问题 (#8549)
add 74fcf4d Fix ShortestResponseLoadBalanceTest failure (#8519)
add 7f91631 [3.0-Triple] Support triple server stream (#8542)
add 592c818 improve annotation parameters test (#8535)
add 038ee3b perf: Optimize the zookeeper timeout in all testcase (#8564)
add d7f2452 Fix bug of BroadcastClusterInvoker and add test cases (#8532)
add 2d26e11 [3.0] Verify additional configuration during service reference (#8543)
add f7933b7 Fix MetadataService connections leak (#8555)
add 72e1f6e fix Issue 8516 on branch 3.0: fix mock:true configuration. (#8558)
add 0382a6b Add test cases to the Configurator after version 2.7 (#8560)
add 89940b0 Ignore Exception when creating Reference (for generic call) (#8534)
add 1a466da test: Add testcases for checking exported metadata service in single registry center (#8540)
add acb96d4 【3.0】Enhance and fix check config (#8483)
add 3c08fd2 Revert "test: Add testcases for checking exported metadata service in single registry center (#8540)" (#8577)
add 7135164 fix: disable testcase of ConfigTest#testReferGenericExport (#8580)
add bc43d68 fix duplicate config init (#8578)
add 5be7566 Update AbstractClient.java (#8591)
add cca6871 issue no #8589, should be use Camel-Case rule (#8590)
add 876eae7 test: Verify the mapping between exported provider and metadata (#8510)
add 6689f4e Add testcase for checking exported metadata service in single registry center (#8583)
add 67bd4d1 [3.0-tri-compiler] dubbo compiler support stream (#8566)
add 7537786 Verify local reference for the creation of a local invoker process (#8592)
add c089e33 chore: upgrade nacos to 2.0.3 (#8588)
add 31e1aa6 Add volatile modifier to some variables in ListenableRouter (#8579)
add d386cd5 Adjust the acquisition of the app, group, and version value of the url (#8582)
add 14bd476 Add unit test for MockInvokersSelector (#8593)
add 80b6a55 「CodeReview」fix some bad smell of Service export & refer (#8594)
add 24e4bd3 test: Add testcase to check exported service in multiple registry center (#8598)
add bce9641 [3.0] ignore non-dubbo nacos services (#8573)
add 4331c22 Check if enable Remote Report Metadata before report app metadata info (#8597)
add 37ee4fe Fix ut after disable default metadata report (#8618)
add 17ba017 move PR#7884 to 3.0 branch (#8616)
add ce73b2d Add Header Filter for Triple Protocol (#8585)
add 6c76c73 [3.0-Triple]Support triple void response (#8608)
add 3ac0c37 [3.0-Triple] Fix error in filters can not be returned to client (#8615)
add dbfad05 [3.0-Triple] Remove operation handler (#8637)
add 0f52c56 add test case for service discovery process (#8607)
add a957fc0 Adjust the scope of the spi extension (#8600)
add 3f59150 [3.0] add bootstrap test (#8639)
new 7c05961 Merge remote-tracking branch 'apache/3.0' into 3.0-multi-instances
new b74de7b Merge branch '3.0-multi-instances' into 3.0-multi-instances-merge
new 99e238a Fix ut
new 185a1d1 Add Scope Model check
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:
compiler/pom.xml | 2 +-
.../main/resources/Dubbo3InterfaceStub.mustache | 44 +-
compiler/src/main/resources/Dubbo3Stub.mustache | 5 +-
compiler/src/main/resources/DubboGrpcStub.mustache | 3 -
compiler/src/main/resources/DubboStub.mustache | 3 -
.../main/resources/ReactorDubboGrpcStub.mustache | 3 -
.../src/main/resources/RxDubboGrpcStub.mustache | 3 -
.../cluster/router/condition/ConditionRouter.java | 3 -
.../cluster/router/condition/config/AppRouter.java | 3 +-
.../router/condition/config/ListenableRouter.java | 4 +-
.../cluster/router/mesh/route/MeshEnvListener.java | 3 -
.../router/mesh/route/MeshEnvListenerFactory.java | 10 +-
.../cluster/router/mesh/route/MeshRuleManager.java | 5 +-
.../cluster/support/BroadcastClusterInvoker.java | 6 +-
.../absent/AbsentConfiguratorTest.java | 52 +++
.../override/OverrideConfiguratorTest.java | 49 +++
.../filter/DefaultFilterChainBuilderTest.java | 66 +++
.../dubbo/rpc/cluster/filter/DemoServiceImpl.java | 14 +-
.../apache/dubbo/rpc/cluster/filter/LogFilter.java | 36 +-
.../ShortestResponseLoadBalanceTest.java | 7 +-
.../router/mock/MockInvokersSelectorTest.java | 71 ++++
.../support/BroadCastClusterInvokerTest.java | 164 ++++++++
.../dubbo/internal/org.apache.dubbo.rpc.Filter | 1 +
.../dubbo/common/constants/CommonConstants.java | 29 +-
.../dubbo/common/extension/ExtensionLoader.java | 1 +
.../extension/support/WrapperComparator.java | 31 +-
.../url/component/DubboServiceAddressURL.java | 6 -
.../org/apache/dubbo/common/utils/ConfigUtils.java | 3 +-
.../org/apache/dubbo/common/utils/NetUtils.java | 55 ++-
.../org/apache/dubbo/config/AbstractConfig.java | 2 +-
.../dubbo/config/AbstractInterfaceConfig.java | 29 ++
.../org/apache/dubbo/config/ApplicationConfig.java | 32 +-
.../apache/dubbo/config/ConfigCenterConfig.java | 74 ++--
.../apache/dubbo/config/MetadataReportConfig.java | 37 +-
.../java/org/apache/dubbo/config/ModuleConfig.java | 2 +
.../apache/dubbo/config/ReferenceConfigBase.java | 9 +
.../org/apache/dubbo/config/ServiceConfigBase.java | 9 +
.../apache/dubbo/rpc/model/ApplicationModel.java | 4 +
.../apache/dubbo/rpc/model/MethodDescriptor.java | 41 +-
.../apache/dubbo/common/utils/NetUtilsTest.java | 91 ++++-
.../dubbo/config/AbstractInterfaceConfigTest.java | 70 +---
.../java/org/apache/dubbo/config/Greeting.java | 12 +-
.../org/apache/dubbo/config/GreetingLocal1.java | 9 +-
.../org/apache/dubbo/config/GreetingLocal2.java | 14 +-
.../org/apache/dubbo/config/GreetingLocal3.java | 17 +-
.../apache/dubbo/descriptor/DescriptorService.java | 5 +
.../dubbo/descriptor/MethodDescriptorTest.java | 14 +
dubbo-config/dubbo-config-api/pom.xml | 12 +
.../org/apache/dubbo/config/ReferenceConfig.java | 11 +-
.../org/apache/dubbo/config/ServiceConfig.java | 13 +-
.../dubbo/config/bootstrap/DubboBootstrap.java | 114 ++++--
.../bootstrap/builders/MetadataReportBuilder.java | 36 +-
.../dubbo/config/utils/ConfigValidationUtils.java | 2 +-
.../apache/dubbo/config/ReferenceConfigTest.java | 453 +++++++++++++++++++--
.../org/apache/dubbo/config/ServiceConfigTest.java | 6 +-
.../bootstrap/DubboBootstrapMultiInstanceTest.java | 20 +-
.../dubbo/config/bootstrap/DubboBootstrapTest.java | 165 +++++++-
.../org/apache/dubbo/config/url/UrlTestBase.java | 61 +--
.../config/utils/ConfigValidationUtilsTest.java | 63 +++
.../org/apache/dubbo/integration/Constants.java | 10 +-
...gistryCenterExportProviderExporterListener.java | 23 +-
...MultipleRegistryCenterExportProviderFilter.java | 86 ++++
...gistryCenterExportProviderIntegrationTest.java} | 119 ++++--
...terExportProviderRegistryProtocolListener.java} | 8 +-
...ltipleRegistryCenterExportProviderService.java} | 12 +-
...leRegistryCenterExportProviderServiceImpl.java} | 16 +-
...egistryCenterExportProviderServiceListener.java | 24 +-
...MultipleRegistryCenterInjvmIntegrationTest.java | 15 +-
...terServiceDiscoveryRegistryIntegrationTest.java | 55 +--
...ceDiscoveryRegistryRegistryServiceListener.java | 28 +-
...RegistryCenterDubboProtocolIntegrationTest.java | 26 +-
...gistryCenterExportMetadataExporterListener.java | 24 +-
...gistryCenterExportMetadataIntegrationTest.java} | 131 +++---
...SingleRegistryCenterExportMetadataService.java} | 12 +-
...leRegistryCenterExportMetadataServiceImpl.java} | 17 +-
...egistryCenterExportMetadataServiceListener.java | 25 +-
...egistryCenterExportProviderIntegrationTest.java | 73 +++-
...nterExportProviderRegistryProtocolListener.java | 4 +-
.../SingleRegistryCenterInjvmIntegrationTest.java | 16 +-
.../registrycenter/AbstractRegistryCenter.java | 107 +++++
.../DefaultMultipleRegistryCenter.java | 121 ------
.../DefaultSingleRegistryCenter.java | 101 -----
.../dubbo/registrycenter/RegistryCenter.java | 33 ++
...r.java => ZookeeperMultipleRegistryCenter.java} | 26 +-
.../registrycenter/ZookeeperRegistryCenter.java | 142 +++++++
...ter.java => ZookeeperSingleRegistryCenter.java} | 27 +-
.../org.apache.dubbo.common.status.StatusChecker | 19 +-
.../org.apache.dubbo.common.threadpool.ThreadPool | 19 +-
.../org.apache.dubbo.config.ServiceListener | 2 +
...g.apache.dubbo.registry.RegistryServiceListener | 17 -
...o.registry.integration.RegistryProtocolListener | 18 +-
.../services/org.apache.dubbo.remoting.Dispatcher | 19 +-
.../services/org.apache.dubbo.remoting.Transporter | 19 +-
.../org.apache.dubbo.remoting.exchange.Exchanger | 19 +-
.../org.apache.dubbo.remoting.telnet.TelnetHandler | 16 -
.../services/org.apache.dubbo.rpc.ExporterListener | 19 +-
.../META-INF/services/org.apache.dubbo.rpc.Filter | 1 +
.../config/spring/util/DubboAnnotationUtils.java | 3 +-
.../src/main/resources/META-INF/dubbo.xsd | 8 +-
.../org/apache/dubbo/config/spring/ConfigTest.java | 9 +-
.../dubbo/config/spring/JavaConfigBeanTest.java | 8 +-
.../annotation/MethodConfigCallbackTest.java | 8 +-
.../factory/annotation/ParameterConvertTest.java | 5 +
.../XmlReferenceBeanConditionalTest.java | 8 +-
...nfigAnnotationReferenceBeanConditionalTest.java | 8 +-
.../JavaConfigRawReferenceBeanConditionalTest.java | 8 +-
.../JavaConfigReferenceBeanConditionalTest4.java | 8 +-
.../configprops/SpringBootConfigPropsTest.java | 13 +-
.../SpringBootMultipleConfigPropsTest.java | 10 +-
.../importxml/SpringBootImportDubboXmlTest.java | 8 +-
.../annotation/DubboConfigConfigurationTest.java | 6 +-
.../context/annotation/EnableDubboConfigTest.java | 11 +-
.../spring/issues/issue6000/Issue6000Test.java | 8 +-
.../spring/issues/issue6252/Issue6252Test.java | 10 +-
.../spring/issues/issue7003/Issue7003Test.java | 8 +-
.../consumer/PropertyConfigurerTest.java | 8 +-
.../consumer2/PropertySourcesConfigurerTest.java | 8 +-
.../consumer3/PropertySourcesInJavaConfigTest.java | 22 +-
.../reference/DubboConfigBeanInitializerTest.java | 8 +-
.../config/spring/reference/ReferenceKeyTest.java | 8 +-
.../javaconfig/JavaConfigReferenceBeanTest.java | 18 +-
.../spring/reference/localcall/LocalCallTest.java | 8 +-
.../spring/reference/localcall/LocalCallTest2.java | 8 +-
.../registrycenter/AbstractRegistryCenter.java | 107 +++++
.../DefaultSingleRegistryCenter.java | 101 -----
.../spring/registrycenter/RegistryCenter.java | 33 ++
...r.java => ZookeeperMultipleRegistryCenter.java} | 42 +-
.../registrycenter/ZookeeperRegistryCenter.java | 142 +++++++
...ter.java => ZookeeperSingleRegistryCenter.java} | 27 +-
.../config/spring/schema/GenericServiceTest.java | 15 +-
dubbo-dependencies-bom/pom.xml | 2 +-
dubbo-distribution/dubbo-all/pom.xml | 12 +
.../org/apache/dubbo/metadata/MetadataInfo.java | 63 ++-
.../apache/dubbo/metadata/ServiceNameMapping.java | 11 +-
.../metadata/report/MetadataReportInstance.java | 7 +-
.../support/AbstractMetadataReportFactory.java | 34 +-
.../apache/dubbo/metadata/MetadataInfoTest.java | 99 +++--
.../CustomizedParamsFilter.java} | 19 +-
.../metadata/filter/ExcludedParamsFilter.java | 26 +-
.../org.apache.dubbo.metadata.MetadataParamsFilter | 3 +-
.../apache/dubbo/auth/AccessKeyAuthenticator.java | 2 +-
.../dubbo/auth/AccessKeyAuthenticatorTest.java | 2 +-
.../dubbo/registry/ListenerRegistryWrapper.java | 8 +-
.../dubbo/registry/ProviderFirstParams.java} | 10 +-
.../registry/client/DefaultServiceInstance.java | 8 +-
.../dubbo/registry/client/InstanceAddressURL.java | 26 +-
.../registry/client/ServiceDiscoveryRegistry.java | 102 +----
.../client/ServiceDiscoveryRegistryDirectory.java | 22 +-
.../dubbo/registry/client/ServiceInstance.java | 11 -
.../listener/ServiceInstancesChangedListener.java | 42 +-
.../metadata/MetadataServiceNameMapping.java | 58 +--
...MetadataServiceURLParamsMetadataCustomizer.java | 3 +
.../registry/client/metadata/MetadataUtils.java | 33 +-
.../ServiceInstanceMetadataCustomizer.java | 40 +-
.../metadata/ServiceInstanceMetadataUtils.java | 42 +-
.../store/InMemoryWritableMetadataService.java | 2 +-
.../metadata/store/RemoteMetadataServiceImpl.java | 2 +-
.../client/migration/MigrationRuleHandler.java | 11 +-
.../client/migration/MigrationRuleListener.java | 33 +-
.../client/migration/model/MigrationRule.java | 13 +-
.../registry/integration/RegistryProtocol.java | 41 +-
.../registry/support/AbstractRegistryFactory.java | 53 ++-
.../support/CacheableFailbackRegistry.java | 14 +-
.../support/DefaultProviderFirstParams.java | 25 +-
.../org.apache.dubbo.registry.ProviderFirstParams | 1 +
.../java/org/apache/dubbo/registry/MockLogger.java | 135 ++++++
.../client/DefaultServiceInstanceTest.java | 62 ++-
.../registry/client/InstanceAddressURLTest.java | 161 ++++++++
.../client/ServiceDiscoveryRegistryTest.java | 249 +++++++++++
.../MockServiceInstancesChangedListener.java | 46 +++
.../ServiceInstancesChangedListenerTest.java | 61 ++-
.../metadata/MetadataServiceNameMappingTest.java | 134 ++++++
.../ProtocolPortsMetadataCustomizerTest.java | 101 +++++
.../ServiceInstanceMetadataCustomizerTest.java | 126 ++++++
.../metadata/store/CustomizedParamsFilter.java | 22 +-
.../metadata/store/ExcludedParamsFilter.java | 16 +-
.../store/InMemoryMetadataServiceTest.java | 175 ++++++++
.../store/RemoteMetadataServiceImplTest.java} | 7 +-
.../client/migration/MigrationInvokerTest.java | 8 +
.../client/migration/MigrationRuleHandlerTest.java | 26 ++
.../migration/MigrationRuleListenerTest.java | 174 +++++++-
.../client/migration/model/MigrationRuleTest.java | 134 +++---
.../DemoService.java} | 9 +-
.../DemoService2.java} | 9 +-
.../support/ServiceOrientedRegistryTest.java | 16 +-
.../org.apache.dubbo.metadata.MetadataParamsFilter | 2 +
.../KubernetesMeshEnvListenerFactory.java | 51 +--
...uster.router.mesh.route.MeshEnvListenerFactory} | 2 +-
.../dubbo/registry/multiple/MultipleRegistry.java | 2 +-
.../multiple/MultipleServiceDiscovery.java | 2 +-
.../registry/nacos/NacosNamingServiceWrapper.java | 4 +
.../apache/dubbo/registry/nacos/NacosRegistry.java | 16 +-
.../registry/nacos/NacosServiceDiscovery.java | 26 +-
.../nacos/util/NacosNamingServiceUtils.java | 15 -
.../zookeeper/ZookeeperServiceDiscovery.java | 9 +-
.../zookeeper/util/CuratorFrameworkUtils.java | 39 +-
.../dubbo/remoting/transport/AbstractClient.java | 13 +-
.../java/org/apache/dubbo/rpc/HeaderFilter.java | 11 +-
.../apache/dubbo/rpc/filter/TokenHeaderFilter.java | 49 +++
.../dubbo/rpc/listener/ListenerInvokerWrapper.java | 7 +
.../dubbo/rpc/protocol/AbstractProtocol.java | 8 +-
.../apache/dubbo/rpc/support/AccessLogData.java | 7 +-
.../org/apache/dubbo/rpc/support/MockInvoker.java | 7 +-
.../internal/org.apache.dubbo.rpc.HeaderFilter | 1 +
.../dubbo/rpc/protocol/CountInvokerListener.java | 28 +-
.../rpc/protocol/ProtocolListenerWrapperTest.java | 81 ++++
.../org/apache/dubbo/rpc/support/DemoServiceA.java | 9 +-
.../apache/dubbo/rpc/support/DemoServiceAMock.java | 12 +-
.../org/apache/dubbo/rpc/support/DemoServiceB.java | 9 +-
.../apache/dubbo/rpc/support/DemoServiceBMock.java | 11 +-
.../apache/dubbo/rpc/support/MockInvokerTest.java | 25 ++
.../internal/org.apache.dubbo.rpc.InvokerListener | 1 +
.../rpc/protocol/dubbo/DecodeableRpcResult.java | 13 +-
.../rpc/protocol/dubbo/DubboCodecSupport.java | 18 +-
.../dubbo/rpc/protocol/dubbo/DubboProtocol.java | 6 +-
.../dubbo/rpc/protocol/injvm/InjvmExporter.java | 2 +-
.../dubbo/rpc/protocol/injvm/InjvmInvoker.java | 2 +-
.../rpc/protocol/injvm/InjvmProtocolTest.java | 19 +-
.../rpc/protocol/tri/AbstractClientStream.java | 6 +-
.../rpc/protocol/tri/AbstractServerStream.java | 23 +-
.../dubbo/rpc/protocol/tri/AbstractStream.java | 54 +--
.../dubbo/rpc/protocol/tri/ClientStream.java | 8 +-
.../rpc/protocol/tri/ClientTransportObserver.java | 6 +-
.../dubbo/rpc/protocol/tri/ServerStream.java | 49 ++-
.../rpc/protocol/tri/ServerTransportObserver.java | 8 +-
...Serialization.java => SingleProtobufUtils.java} | 64 ++-
.../org/apache/dubbo/rpc/protocol/tri/Stream.java | 46 ++-
.../dubbo/rpc/protocol/tri/TransportObserver.java | 20 +-
.../rpc/protocol/tri/TripleClientHandler.java | 16 +-
.../protocol/tri/TripleClientInboundHandler.java | 2 +-
.../tri/TripleHttp2ClientResponseHandler.java | 6 +-
.../tri/TripleHttp2FrameServerHandler.java | 6 +-
.../protocol/tri/TripleServerInboundHandler.java | 2 +-
.../apache/dubbo/rpc/protocol/tri/TripleUtil.java | 6 +-
.../dubbo/rpc/protocol/tri/UnaryClientStream.java | 11 +-
.../dubbo/rpc/protocol/tri/UnaryServerStream.java | 18 +-
.../rpc/protocol/tri/UnaryClientStreamTest.java | 2 +-
237 files changed, 5550 insertions(+), 2121 deletions(-)
copy dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/ServieDiscoveryRegistryTest.java => dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListenerFactory.java (81%)
create mode 100644 dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/filter/DefaultFilterChainBuilderTest.java
copy dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/DefaultMetadataParamsFilter.java => dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/filter/DemoServiceImpl.java (76%)
copy dubbo-rpc/dubbo-rpc-injvm/src/main/java/org/apache/dubbo/rpc/protocol/injvm/InjvmExporter.java => dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/filter/LogFilter.java (53%)
create mode 100644 dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelectorTest.java
create mode 100644 dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/BroadCastClusterInvokerTest.java
create mode 100644 dubbo-cluster/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
rename {dubbo-config/dubbo-config-api => dubbo-common}/src/test/java/org/apache/dubbo/config/AbstractInterfaceConfigTest.java (76%)
copy dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/ServieDiscoveryRegistryTest.java => dubbo-common/src/test/java/org/apache/dubbo/config/Greeting.java (80%)
copy dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/ServieDiscoveryRegistryTest.java => dubbo-common/src/test/java/org/apache/dubbo/config/GreetingLocal1.java (83%)
copy dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/ServieDiscoveryRegistryTest.java => dubbo-common/src/test/java/org/apache/dubbo/config/GreetingLocal2.java (78%)
copy dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/DefaultMetadataParamsFilter.java => dubbo-common/src/test/java/org/apache/dubbo/config/GreetingLocal3.java (70%)
create mode 100644 dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ConfigValidationUtilsTest.java
copy dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/ServieDiscoveryRegistryTest.java => dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/Constants.java (75%)
copy dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppRouter.java => dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderExporterListener.java (62%)
create mode 100644 dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderFilter.java
copy dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/{single/exportprovider/SingleRegistryCenterExportProviderIntegrationTest.java => multiple/exportprovider/MultipleRegistryCenterExportProviderIntegrationTest.java} (55%)
copy dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/{single/exportprovider/SingleRegistryCenterExportProviderRegistryProtocolListener.java => multiple/exportprovider/MultipleRegistryCenterExportProviderRegistryProtocolListener.java} (83%)
rename dubbo-config/{dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registrycenter/SingleRegistryCenter.java => dubbo-config-api/src/test/java/org/apache/dubbo/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderService.java} (73%)
copy dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{registrycenter/SingleRegistryCenter.java => integration/multiple/exportprovider/MultipleRegistryCenterExportProviderServiceImpl.java} (69%)
copy dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListener.java => dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderServiceListener.java (59%)
copy dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppRouter.java => dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/single/exportmetadata/SingleRegistryCenterExportMetadataExporterListener.java (61%)
copy dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/single/{injvm/SingleRegistryCenterInjvmIntegrationTest.java => exportmetadata/SingleRegistryCenterExportMetadataIntegrationTest.java} (57%)
rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{registrycenter/SingleRegistryCenter.java => integration/single/exportmetadata/SingleRegistryCenterExportMetadataService.java} (74%)
rename dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/{registrycenter/MultipleRegistryCenter.java => integration/single/exportmetadata/SingleRegistryCenterExportMetadataServiceImpl.java} (69%)
copy dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListener.java => dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/single/exportmetadata/SingleRegistryCenterExportMetadataServiceListener.java (59%)
create 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/DefaultMultipleRegistryCenter.java
delete mode 100644 dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/registrycenter/DefaultSingleRegistryCenter.java
copy dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/registrycenter/{RegistryCenter.java => ZookeeperMultipleRegistryCenter.java} (56%)
create mode 100644 dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/registrycenter/ZookeeperRegistryCenter.java
copy dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/registrycenter/{RegistryCenter.java => ZookeeperSingleRegistryCenter.java} (61%)
create 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/DefaultSingleRegistryCenter.java
rename dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registrycenter/{ZooKeeperServer.java => ZookeeperMultipleRegistryCenter.java} (55%)
create mode 100644 dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registrycenter/ZookeeperRegistryCenter.java
copy dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registrycenter/{RegistryCenter.java => ZookeeperSingleRegistryCenter.java} (61%)
copy dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/{DefaultMetadataParamsFilter.java => filter/CustomizedParamsFilter.java} (59%)
copy dubbo-common/src/main/java/org/apache/dubbo/common/infra/support/CmdbAdapter.java => dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/filter/ExcludedParamsFilter.java (61%)
copy dubbo-registry/dubbo-registry-api/src/{test/java/org/apache/dubbo/registry/client/ServieDiscoveryRegistryTest.java => main/java/org/apache/dubbo/registry/ProviderFirstParams.java} (84%)
copy dubbo-common/src/main/java/org/apache/dubbo/common/infra/support/CmdbAdapter.java => dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/DefaultProviderFirstParams.java (54%)
create mode 100644 dubbo-registry/dubbo-registry-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.ProviderFirstParams
create mode 100644 dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/MockLogger.java
create mode 100644 dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/InstanceAddressURLTest.java
create mode 100644 dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryTest.java
create mode 100644 dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/event/listener/MockServiceInstancesChangedListener.java
create mode 100644 dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/MetadataServiceNameMappingTest.java
create mode 100644 dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizerTest.java
create mode 100644 dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizerTest.java
copy dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/DefaultMetadataParamsFilter.java => dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/store/CustomizedParamsFilter.java (53%)
rename dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/DefaultMetadataParamsFilter.java => dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/store/ExcludedParamsFilter.java (69%)
create mode 100644 dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/store/InMemoryMetadataServiceTest.java
copy dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/{ServieDiscoveryRegistryTest.java => metadata/store/RemoteMetadataServiceImplTest.java} (88%)
copy dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/{client/ServieDiscoveryRegistryTest.java => service/DemoService.java} (88%)
copy dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/{client/ServieDiscoveryRegistryTest.java => service/DemoService2.java} (88%)
create mode 100644 dubbo-registry/dubbo-registry-api/src/test/resources/META-INF/dubbo/org.apache.dubbo.metadata.MetadataParamsFilter
copy dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/Stream.java => dubbo-registry/dubbo-registry-kubernetes/src/main/java/org/apache/dubbo/registry/kubernetes/KubernetesMeshEnvListenerFactory.java (50%)
rename dubbo-registry/dubbo-registry-kubernetes/src/main/resources/META-INF/dubbo/internal/{org.apache.dubbo.rpc.cluster.router.mesh.route.MeshEnvListener => org.apache.dubbo.rpc.cluster.router.mesh.route.MeshEnvListenerFactory} (79%)
copy dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/ServieDiscoveryRegistryTest.java => dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/HeaderFilter.java (79%)
create mode 100644 dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/TokenHeaderFilter.java
create mode 100644 dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.HeaderFilter
rename dubbo-common/src/main/java/org/apache/dubbo/common/infra/support/CmdbAdapter.java => dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/protocol/CountInvokerListener.java (60%)
create mode 100644 dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/protocol/ProtocolListenerWrapperTest.java
copy dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/ServieDiscoveryRegistryTest.java => dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/DemoServiceA.java (89%)
copy dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/ServieDiscoveryRegistryTest.java => dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/DemoServiceAMock.java (75%)
copy dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/ServieDiscoveryRegistryTest.java => dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/DemoServiceB.java (89%)
rename dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/ServieDiscoveryRegistryTest.java => dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/DemoServiceBMock.java (75%)
create mode 100644 dubbo-rpc/dubbo-rpc-api/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.InvokerListener
rename dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/{SingleProtobufSerialization.java => SingleProtobufUtils.java} (54%)
[dubbo] 02/04: Merge branch '3.0-multi-instances' into
3.0-multi-instances-merge
Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.0-multi-instances
in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit b74de7ba118a7eff612b55a0c962a00f7102bd02
Merge: 7c05961 bdf30e6
Author: Albumen Kevin <jh...@gmail.com>
AuthorDate: Tue Aug 31 20:34:15 2021 +0800
Merge branch '3.0-multi-instances' into 3.0-multi-instances-merge
.../apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java | 10 +++++++++-
.../apache/dubbo/rpc/protocol/dubbo/ArgumentCallbackTest.java | 8 ++++++--
2 files changed, 15 insertions(+), 3 deletions(-)
[dubbo] 01/04: Merge remote-tracking branch 'apache/3.0' into
3.0-multi-instances
Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.0-multi-instances
in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit 7c059611a41f17f11ff3e0fd853be1a8c3a4735c
Merge: 6c65c31 3f59150
Author: Albumen Kevin <jh...@gmail.com>
AuthorDate: Tue Aug 31 17:47:12 2021 +0800
Merge remote-tracking branch 'apache/3.0' into 3.0-multi-instances
# Conflicts:
# dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java
# dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
# dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
# dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
# dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryRegistryServiceListener.java
# dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/javaconfig/JavaConfigReferenceBeanTest.java
# dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/MetadataReportInstance.java
# dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/DefaultServiceInstance.java
# dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java
# dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceNameMapping.java
# dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.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/integration/RegistryProtocol.java
# dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/CacheableFailbackRegistry.java
# dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/DefaultServiceInstanceTest.java
# dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/MigrationRuleListenerTest.java
# dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/model/MigrationRuleTest.java
# dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java
# dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtils.java
# dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java
compiler/pom.xml | 2 +-
.../main/resources/Dubbo3InterfaceStub.mustache | 44 +-
compiler/src/main/resources/Dubbo3Stub.mustache | 5 +-
compiler/src/main/resources/DubboGrpcStub.mustache | 3 -
compiler/src/main/resources/DubboStub.mustache | 3 -
.../main/resources/ReactorDubboGrpcStub.mustache | 3 -
.../src/main/resources/RxDubboGrpcStub.mustache | 3 -
.../cluster/router/condition/ConditionRouter.java | 3 -
.../cluster/router/condition/config/AppRouter.java | 3 +-
.../router/condition/config/ListenableRouter.java | 4 +-
.../cluster/router/mesh/route/MeshEnvListener.java | 3 -
.../router/mesh/route/MeshEnvListenerFactory.java | 10 +-
.../cluster/router/mesh/route/MeshRuleManager.java | 5 +-
.../cluster/support/BroadcastClusterInvoker.java | 6 +-
.../absent/AbsentConfiguratorTest.java | 52 ++
.../override/OverrideConfiguratorTest.java | 49 ++
.../filter/DefaultFilterChainBuilderTest.java | 66 +++
.../dubbo/rpc/cluster/filter/DemoServiceImpl.java | 14 +-
.../apache/dubbo/rpc/cluster/filter/LogFilter.java | 36 +-
.../ShortestResponseLoadBalanceTest.java | 7 +-
.../router/mock/MockInvokersSelectorTest.java | 71 +++
.../support/BroadCastClusterInvokerTest.java | 164 +++++++
.../dubbo/internal/org.apache.dubbo.rpc.Filter | 1 +
.../dubbo/common/constants/CommonConstants.java | 29 +-
.../dubbo/common/extension/ExtensionLoader.java | 1 +
.../extension/support/WrapperComparator.java | 31 +-
.../url/component/DubboServiceAddressURL.java | 6 -
.../org/apache/dubbo/common/utils/ConfigUtils.java | 3 +-
.../org/apache/dubbo/common/utils/NetUtils.java | 55 ++-
.../org/apache/dubbo/config/AbstractConfig.java | 2 +-
.../org/apache/dubbo/config/ApplicationConfig.java | 32 +-
.../apache/dubbo/config/ConfigCenterConfig.java | 74 +--
.../apache/dubbo/config/MetadataReportConfig.java | 37 +-
.../java/org/apache/dubbo/config/ModuleConfig.java | 2 +
.../apache/dubbo/rpc/model/MethodDescriptor.java | 41 +-
.../apache/dubbo/common/utils/NetUtilsTest.java | 91 +++-
.../dubbo/config/AbstractInterfaceConfigTest.java | 70 +--
.../java/org/apache/dubbo/config/Greeting.java | 12 +-
.../org/apache/dubbo/config/GreetingLocal1.java | 9 +-
.../org/apache/dubbo/config/GreetingLocal2.java | 14 +-
.../org/apache/dubbo/config/GreetingLocal3.java | 17 +-
.../apache/dubbo/descriptor/DescriptorService.java | 5 +
.../dubbo/descriptor/MethodDescriptorTest.java | 14 +
dubbo-config/dubbo-config-api/pom.xml | 7 +
.../org/apache/dubbo/config/ReferenceConfig.java | 12 +-
.../org/apache/dubbo/config/ServiceConfig.java | 11 +-
.../dubbo/config/bootstrap/DubboBootstrap.java | 116 +++--
.../bootstrap/builders/MetadataReportBuilder.java | 36 +-
.../dubbo/config/utils/ConfigValidationUtils.java | 2 +-
.../apache/dubbo/config/ReferenceConfigTest.java | 531 ++++++++++++++++++++-
.../org/apache/dubbo/config/ServiceConfigTest.java | 6 +-
.../dubbo/config/bootstrap/DubboBootstrapTest.java | 166 ++++++-
.../org/apache/dubbo/config/url/UrlTestBase.java | 61 +--
.../config/utils/ConfigValidationUtilsTest.java | 63 +++
.../org/apache/dubbo/integration/Constants.java | 10 +-
...gistryCenterExportProviderExporterListener.java | 23 +-
...MultipleRegistryCenterExportProviderFilter.java | 86 ++++
...gistryCenterExportProviderIntegrationTest.java} | 113 +++--
...terExportProviderRegistryProtocolListener.java} | 8 +-
...ltipleRegistryCenterExportProviderService.java} | 12 +-
...leRegistryCenterExportProviderServiceImpl.java} | 16 +-
...egistryCenterExportProviderServiceListener.java | 24 +-
...MultipleRegistryCenterInjvmIntegrationTest.java | 15 +-
...terServiceDiscoveryRegistryIntegrationTest.java | 55 ++-
...ceDiscoveryRegistryRegistryServiceListener.java | 28 +-
...RegistryCenterDubboProtocolIntegrationTest.java | 26 +-
...gistryCenterExportMetadataExporterListener.java | 24 +-
...gistryCenterExportMetadataIntegrationTest.java} | 131 ++---
...SingleRegistryCenterExportMetadataService.java} | 12 +-
...leRegistryCenterExportMetadataServiceImpl.java} | 17 +-
...egistryCenterExportMetadataServiceListener.java | 25 +-
...egistryCenterExportProviderIntegrationTest.java | 67 ++-
...nterExportProviderRegistryProtocolListener.java | 4 +-
.../SingleRegistryCenterInjvmIntegrationTest.java | 16 +-
.../registrycenter/AbstractRegistryCenter.java | 107 +++++
.../DefaultMultipleRegistryCenter.java | 121 -----
.../DefaultSingleRegistryCenter.java | 101 ----
.../dubbo/registrycenter/RegistryCenter.java | 33 ++
...r.java => ZookeeperMultipleRegistryCenter.java} | 26 +-
.../registrycenter/ZookeeperRegistryCenter.java | 142 ++++++
...ter.java => ZookeeperSingleRegistryCenter.java} | 27 +-
.../org.apache.dubbo.common.status.StatusChecker | 19 +-
.../org.apache.dubbo.common.threadpool.ThreadPool | 19 +-
.../org.apache.dubbo.config.ServiceListener | 2 +
...g.apache.dubbo.registry.RegistryServiceListener | 17 -
...o.registry.integration.RegistryProtocolListener | 18 +-
.../services/org.apache.dubbo.remoting.Dispatcher | 19 +-
.../services/org.apache.dubbo.remoting.Transporter | 19 +-
.../org.apache.dubbo.remoting.exchange.Exchanger | 19 +-
.../org.apache.dubbo.remoting.telnet.TelnetHandler | 16 -
.../services/org.apache.dubbo.rpc.ExporterListener | 19 +-
.../META-INF/services/org.apache.dubbo.rpc.Filter | 1 +
.../config/spring/util/DubboAnnotationUtils.java | 3 +-
.../src/main/resources/META-INF/dubbo.xsd | 8 +-
.../org/apache/dubbo/config/spring/ConfigTest.java | 9 +-
.../dubbo/config/spring/JavaConfigBeanTest.java | 8 +-
.../annotation/MethodConfigCallbackTest.java | 8 +-
.../factory/annotation/ParameterConvertTest.java | 5 +
.../XmlReferenceBeanConditionalTest.java | 8 +-
...nfigAnnotationReferenceBeanConditionalTest.java | 8 +-
.../JavaConfigRawReferenceBeanConditionalTest.java | 8 +-
.../JavaConfigReferenceBeanConditionalTest4.java | 8 +-
.../configprops/SpringBootConfigPropsTest.java | 13 +-
.../SpringBootMultipleConfigPropsTest.java | 10 +-
.../importxml/SpringBootImportDubboXmlTest.java | 8 +-
.../annotation/DubboConfigConfigurationTest.java | 6 +-
.../context/annotation/EnableDubboConfigTest.java | 11 +-
.../spring/issues/issue6000/Issue6000Test.java | 8 +-
.../spring/issues/issue6252/Issue6252Test.java | 10 +-
.../spring/issues/issue7003/Issue7003Test.java | 8 +-
.../consumer/PropertyConfigurerTest.java | 8 +-
.../consumer2/PropertySourcesConfigurerTest.java | 8 +-
.../consumer3/PropertySourcesInJavaConfigTest.java | 25 +-
.../reference/DubboConfigBeanInitializerTest.java | 8 +-
.../config/spring/reference/ReferenceKeyTest.java | 8 +-
.../javaconfig/JavaConfigReferenceBeanTest.java | 15 +-
.../spring/reference/localcall/LocalCallTest.java | 8 +-
.../spring/reference/localcall/LocalCallTest2.java | 8 +-
.../registrycenter/AbstractRegistryCenter.java | 107 +++++
.../DefaultSingleRegistryCenter.java | 101 ----
.../spring/registrycenter/RegistryCenter.java | 33 ++
...r.java => ZookeeperMultipleRegistryCenter.java} | 42 +-
.../registrycenter/ZookeeperRegistryCenter.java | 142 ++++++
...ter.java => ZookeeperSingleRegistryCenter.java} | 27 +-
.../config/spring/schema/GenericServiceTest.java | 15 +-
dubbo-dependencies-bom/pom.xml | 2 +-
dubbo-distribution/dubbo-all/pom.xml | 12 +
.../org/apache/dubbo/metadata/MetadataInfo.java | 63 ++-
.../apache/dubbo/metadata/ServiceNameMapping.java | 2 +-
.../metadata/report/MetadataReportInstance.java | 7 +-
.../support/AbstractMetadataReportFactory.java | 34 +-
.../apache/dubbo/metadata/MetadataInfoTest.java | 99 +++-
.../CustomizedParamsFilter.java} | 19 +-
.../metadata/filter/ExcludedParamsFilter.java | 26 +-
.../org.apache.dubbo.metadata.MetadataParamsFilter | 3 +-
.../apache/dubbo/auth/AccessKeyAuthenticator.java | 2 +-
.../dubbo/auth/AccessKeyAuthenticatorTest.java | 2 +-
.../dubbo/registry/ListenerRegistryWrapper.java | 8 +-
.../dubbo/registry/ProviderFirstParams.java} | 10 +-
.../registry/client/DefaultServiceInstance.java | 7 +-
.../dubbo/registry/client/InstanceAddressURL.java | 26 +-
.../registry/client/ServiceDiscoveryRegistry.java | 100 +---
.../client/ServiceDiscoveryRegistryDirectory.java | 22 +-
.../dubbo/registry/client/ServiceInstance.java | 11 -
.../listener/ServiceInstancesChangedListener.java | 42 +-
.../metadata/MetadataServiceNameMapping.java | 58 +--
...MetadataServiceURLParamsMetadataCustomizer.java | 3 +
.../registry/client/metadata/MetadataUtils.java | 33 +-
.../ServiceInstanceMetadataCustomizer.java | 42 +-
.../metadata/ServiceInstanceMetadataUtils.java | 42 +-
.../store/InMemoryWritableMetadataService.java | 2 +-
.../metadata/store/RemoteMetadataServiceImpl.java | 2 +-
.../client/migration/MigrationRuleHandler.java | 11 +-
.../client/migration/MigrationRuleListener.java | 33 +-
.../client/migration/model/MigrationRule.java | 3 +
.../registry/integration/RegistryProtocol.java | 31 +-
.../registry/support/AbstractRegistryFactory.java | 53 +-
.../support/CacheableFailbackRegistry.java | 15 +-
.../support/DefaultProviderFirstParams.java | 25 +-
.../org.apache.dubbo.registry.ProviderFirstParams | 1 +
.../java/org/apache/dubbo/registry/MockLogger.java | 135 ++++++
.../client/DefaultServiceInstanceTest.java | 62 ++-
.../registry/client/InstanceAddressURLTest.java | 160 +++++++
.../client/ServiceDiscoveryRegistryTest.java | 248 ++++++++++
.../MockServiceInstancesChangedListener.java | 46 ++
.../ServiceInstancesChangedListenerTest.java | 61 ++-
.../metadata/MetadataServiceNameMappingTest.java | 134 ++++++
.../ProtocolPortsMetadataCustomizerTest.java | 101 ++++
.../ServiceInstanceMetadataCustomizerTest.java | 126 +++++
.../metadata/store/CustomizedParamsFilter.java | 22 +-
.../metadata/store/ExcludedParamsFilter.java | 16 +-
.../store/InMemoryMetadataServiceTest.java | 175 +++++++
.../store/RemoteMetadataServiceImplTest.java} | 7 +-
.../client/migration/MigrationInvokerTest.java | 8 +
.../client/migration/MigrationRuleHandlerTest.java | 26 +
.../migration/MigrationRuleListenerTest.java | 174 ++++++-
.../client/migration/model/MigrationRuleTest.java | 106 ++--
.../DemoService.java} | 9 +-
.../DemoService2.java} | 9 +-
.../support/ServiceOrientedRegistryTest.java | 16 +-
.../org.apache.dubbo.metadata.MetadataParamsFilter | 2 +
.../KubernetesMeshEnvListenerFactory.java | 51 +-
...uster.router.mesh.route.MeshEnvListenerFactory} | 2 +-
.../dubbo/registry/multiple/MultipleRegistry.java | 2 +-
.../multiple/MultipleServiceDiscovery.java | 2 +-
.../registry/nacos/NacosNamingServiceWrapper.java | 4 +
.../apache/dubbo/registry/nacos/NacosRegistry.java | 16 +-
.../registry/nacos/NacosServiceDiscovery.java | 26 +-
.../nacos/util/NacosNamingServiceUtils.java | 15 -
.../zookeeper/ZookeeperServiceDiscovery.java | 9 +-
.../zookeeper/util/CuratorFrameworkUtils.java | 39 +-
.../dubbo/remoting/transport/AbstractClient.java | 13 +-
.../java/org/apache/dubbo/rpc/HeaderFilter.java | 11 +-
.../apache/dubbo/rpc/filter/TokenHeaderFilter.java | 49 ++
.../dubbo/rpc/listener/ListenerInvokerWrapper.java | 7 +
.../dubbo/rpc/protocol/AbstractProtocol.java | 8 +-
.../apache/dubbo/rpc/support/AccessLogData.java | 7 +-
.../org/apache/dubbo/rpc/support/MockInvoker.java | 7 +-
.../internal/org.apache.dubbo.rpc.HeaderFilter | 1 +
.../dubbo/rpc/protocol/CountInvokerListener.java | 28 +-
.../rpc/protocol/ProtocolListenerWrapperTest.java | 81 ++++
.../org/apache/dubbo/rpc/support/DemoServiceA.java | 9 +-
.../apache/dubbo/rpc/support/DemoServiceAMock.java | 12 +-
.../org/apache/dubbo/rpc/support/DemoServiceB.java | 9 +-
.../apache/dubbo/rpc/support/DemoServiceBMock.java | 11 +-
.../apache/dubbo/rpc/support/MockInvokerTest.java | 25 +
.../internal/org.apache.dubbo.rpc.InvokerListener | 1 +
.../rpc/protocol/dubbo/DecodeableRpcResult.java | 13 +-
.../rpc/protocol/dubbo/DubboCodecSupport.java | 18 +-
.../dubbo/rpc/protocol/dubbo/DubboProtocol.java | 6 +-
.../dubbo/rpc/protocol/injvm/InjvmExporter.java | 2 +-
.../dubbo/rpc/protocol/injvm/InjvmInvoker.java | 2 +-
.../rpc/protocol/injvm/InjvmProtocolTest.java | 19 +-
.../rpc/protocol/tri/AbstractClientStream.java | 6 +-
.../rpc/protocol/tri/AbstractServerStream.java | 23 +-
.../dubbo/rpc/protocol/tri/AbstractStream.java | 54 ++-
.../dubbo/rpc/protocol/tri/ClientStream.java | 8 +-
.../rpc/protocol/tri/ClientTransportObserver.java | 6 +-
.../dubbo/rpc/protocol/tri/ServerStream.java | 49 +-
.../rpc/protocol/tri/ServerTransportObserver.java | 8 +-
...Serialization.java => SingleProtobufUtils.java} | 64 ++-
.../org/apache/dubbo/rpc/protocol/tri/Stream.java | 46 +-
.../dubbo/rpc/protocol/tri/TransportObserver.java | 20 +-
.../rpc/protocol/tri/TripleClientHandler.java | 16 +-
.../protocol/tri/TripleClientInboundHandler.java | 2 +-
.../tri/TripleHttp2ClientResponseHandler.java | 6 +-
.../tri/TripleHttp2FrameServerHandler.java | 6 +-
.../protocol/tri/TripleServerInboundHandler.java | 2 +-
.../apache/dubbo/rpc/protocol/tri/TripleUtil.java | 6 +-
.../dubbo/rpc/protocol/tri/UnaryClientStream.java | 11 +-
.../dubbo/rpc/protocol/tri/UnaryServerStream.java | 18 +-
.../rpc/protocol/tri/UnaryClientStreamTest.java | 2 +-
232 files changed, 5513 insertions(+), 2091 deletions(-)
diff --cc dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManager.java
index 6e988f9,b07fede..c64d780
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManager.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManager.java
@@@ -40,10 -42,11 +42,11 @@@ public final class MeshRuleManager
MeshAppRuleListener meshAppRuleListener = new MeshAppRuleListener(app);
String appRuleDataId = app + MESH_RULE_DATA_ID_SUFFIX;
- DynamicConfiguration configuration = ApplicationModel.getEnvironment().getDynamicConfiguration()
+ DynamicConfiguration configuration = ApplicationModel.defaultModel().getApplicationEnvironment().getDynamicConfiguration()
.orElse(null);
- Set<MeshEnvListener> envListeners = ExtensionLoader.getExtensionLoader(MeshEnvListener.class).getSupportedExtensionInstances();
+ Set<MeshEnvListenerFactory> envListenerFactories = ExtensionLoader.getExtensionLoader(MeshEnvListenerFactory.class).getSupportedExtensionInstances();
+ Set<MeshEnvListener> envListeners = envListenerFactories.stream().map(MeshEnvListenerFactory::getListener).filter(Objects::nonNull).collect(Collectors.toSet());
if (configuration == null && envListeners.stream().noneMatch(MeshEnvListener::isEnable)) {
logger.warn("Doesn't support Configuration!");
diff --cc dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java
index 67de259,7c59e88..c1019ea
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java
@@@ -448,7 -464,12 +464,16 @@@ public interface CommonConstants
String SERVICE_NAME_MAPPING_KEY = "service-name-mapping";
+ String SCOPE_MODEL = "scopeModel";
+
+ String SERVICE_MODEL = "serviceModel";
++
+ /**
+ * The property name for {@link NetworkInterface#getDisplayName() the name of network interface} that
+ * the Dubbo application will be ignored
+ *
+ * @since 2.7.6
+ */
+ String DUBBO_NETWORK_IGNORED_INTERFACE = "dubbo.network.interface.ignored";
+
}
diff --cc dubbo-common/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
index 4133f0e,412122e..59ff045
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
@@@ -131,13 -149,11 +149,13 @@@ public class ConfigCenterConfig extend
if (StringUtils.isEmpty(map.get(PROTOCOL_KEY))) {
map.put(PROTOCOL_KEY, ZOOKEEPER_PROTOCOL);
}
- return UrlUtils.parseURL(address, map);
+ URL url = UrlUtils.parseURL(address, map);
+ url.setScopeModel(getScopeModel());
+ return url;
}
- public boolean checkOrUpdateInited() {
- return inited.compareAndSet(false, true);
+ public boolean checkOrUpdateInitialized(boolean update) {
+ return initialized.compareAndSet(false, update);
}
public Map<String, String> getExternalConfiguration() {
diff --cc dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
index c66202f,04511e2..2f2e4cc
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
@@@ -44,6 -45,6 +44,7 @@@ import org.apache.dubbo.rpc.model.Async
import org.apache.dubbo.rpc.model.ConsumerModel;
import org.apache.dubbo.rpc.model.ServiceDescriptor;
import org.apache.dubbo.rpc.model.ServiceRepository;
++import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.protocol.injvm.InjvmProtocol;
import org.apache.dubbo.rpc.service.GenericService;
import org.apache.dubbo.rpc.support.ProtocolUtils;
diff --cc dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
index 7ce2e3f,4c07ecc..ec49581
--- 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
@@@ -208,10 -197,8 +208,8 @@@ public class ServiceConfig<T> extends S
this.bootstrap.service(this);
// load ServiceListeners from extension
- ExtensionLoader<ServiceListener> extensionLoader = ExtensionLoader.getExtensionLoader(ServiceListener.class);
+ ExtensionLoader<ServiceListener> extensionLoader = this.getExtensionLoader(ServiceListener.class);
this.serviceListeners.addAll(extensionLoader.getSupportedExtensionInstances());
-
- this.checkAndUpdateSubConfigs();
}
initServiceMetadata(provider);
diff --cc dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
index 584544f,19d924d..ec51a07
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
@@@ -113,7 -111,7 +113,8 @@@ import static org.apache.dubbo.common.u
import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;
import static org.apache.dubbo.metadata.MetadataConstants.DEFAULT_METADATA_PUBLISH_DELAY;
import static org.apache.dubbo.metadata.MetadataConstants.METADATA_PUBLISH_DELAY_KEY;
+import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.calInstanceRevision;
+ import static org.apache.dubbo.metadata.WritableMetadataService.getDefaultExtension;
import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.setMetadataStorageType;
import static org.apache.dubbo.registry.support.AbstractRegistryFactory.getServiceDiscoveries;
import static org.apache.dubbo.remoting.Constants.CLIENT_KEY;
@@@ -160,47 -158,46 +161,50 @@@ public final class DubboBootstrap
private final ExecutorService executorService = newSingleThreadExecutor();
- private final ExecutorRepository executorRepository = getExtensionLoader(ExecutorRepository.class).getDefaultExtension();
+ private ExecutorRepository executorRepository;
+
+ private final ApplicationModel applicationModel;
- private final ConfigManager configManager;
+ protected ScheduledFuture<?> asyncMetadataFuture;
- private final Environment environment;
+ protected final ConfigManager configManager;
- private ReferenceConfigCache cache;
+ protected final Environment environment;
- private AtomicBoolean initialized = new AtomicBoolean(false);
+ protected ReferenceConfigCache cache;
- private AtomicBoolean started = new AtomicBoolean(false);
+ protected AtomicBoolean initialized = new AtomicBoolean(false);
- private AtomicBoolean startup = new AtomicBoolean(true);
+ protected AtomicBoolean started = new AtomicBoolean(false);
- private AtomicBoolean destroyed = new AtomicBoolean(false);
+ protected AtomicBoolean startup = new AtomicBoolean(true);
- private AtomicBoolean shutdown = new AtomicBoolean(false);
+ protected AtomicBoolean destroyed = new AtomicBoolean(false);
- private volatile boolean isCurrentlyInStart = false;
+ protected AtomicBoolean shutdown = new AtomicBoolean(false);
- private volatile ServiceInstance serviceInstance;
+ protected volatile boolean isCurrentlyInStart = false;
- private volatile MetadataService metadataService;
+ protected volatile ServiceInstance serviceInstance;
- private volatile MetadataServiceExporter metadataServiceExporter;
+ protected volatile MetadataService metadataService;
- private List<ServiceConfigBase<?>> exportedServices = new ArrayList<>();
+ protected volatile MetadataServiceExporter metadataServiceExporter;
- private final List<CompletableFuture<?>> asyncExportingFutures = new ArrayList<>();
+ protected List<ServiceConfigBase<?>> exportedServices = new ArrayList<>();
- private final List<CompletableFuture<?>> asyncReferringFutures = new ArrayList<>();
+ protected final List<CompletableFuture<?>> asyncExportingFutures = new ArrayList<>();
- private boolean asyncExportFinish = true;
+ protected final List<CompletableFuture<?>> asyncReferringFutures = new ArrayList<>();
- private boolean asyncReferFinish = true;
- protected volatile boolean asyncExportFinish = true;
++ protected boolean asyncExportFinish = true;
+
+ protected volatile boolean asyncReferFinish = true;
+
+ protected static boolean ignoreConfigState;
- private static boolean ignoreConfigState;
+ private Module currentModule;
+
/**
* See {@link ApplicationModel} and {@link ExtensionLoader} for why DubboBootstrap is designed to be singleton.
*/
@@@ -1495,29 -1451,38 +1512,34 @@@
}
private void referServices() {
- if (cache == null) {
- cache = ReferenceConfigCache.getCache();
- }
-
configManager.getReferences().forEach(rc -> {
- // TODO, compatible with ReferenceConfig.refer()
- ReferenceConfig<?> referenceConfig = (ReferenceConfig<?>) rc;
- referenceConfig.setBootstrap(this);
- if (!referenceConfig.isRefreshed()) {
- referenceConfig.refresh();
- }
-
- if (rc.shouldInit()) {
- if (rc.shouldReferAsync()) {
- ExecutorService executor = executorRepository.getServiceReferExecutor();
- CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
- try {
- cache.get(rc);
- } catch (Throwable t) {
- logger.error("refer async catch error : " + t.getMessage(), t);
- }
- }, executor);
+ try {
+ // TODO, compatible with ReferenceConfig.refer()
+ ReferenceConfig<?> referenceConfig = (ReferenceConfig<?>) rc;
+ referenceConfig.setBootstrap(this);
+ if (!referenceConfig.isRefreshed()) {
+ referenceConfig.refresh();
+ }
- asyncReferringFutures.add(future);
- } else {
- cache.get(rc);
+ if (rc.shouldInit()) {
+ if (rc.shouldReferAsync()) {
+ ExecutorService executor = executorRepository.getServiceReferExecutor();
+ CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
+ try {
+ cache.get(rc);
+ } catch (Throwable t) {
+ logger.error("refer async catch error : " + t.getMessage(), t);
+ }
+ }, executor);
+
+ asyncReferringFutures.add(future);
+ } else {
+ cache.get(rc);
+ }
}
+ } catch (Throwable t) {
+ logger.error("refer catch error", t);
+ cache.destroy(rc);
}
});
}
@@@ -1550,10 -1519,10 +1572,10 @@@
registered = false;
logger.error("Register instance error", e);
}
- if(registered){
+ if (registered) {
// scheduled task for updating Metadata and ServiceInstance
- executorRepository.nextScheduledExecutor().scheduleAtFixedRate(() -> {
+ asyncMetadataFuture = executorRepository.nextScheduledExecutor().scheduleAtFixedRate(() -> {
- InMemoryWritableMetadataService localMetadataService = (InMemoryWritableMetadataService) WritableMetadataService.getDefaultExtension();
+ InMemoryWritableMetadataService localMetadataService = (InMemoryWritableMetadataService) WritableMetadataService.getDefaultExtension(applicationModel);
localMetadataService.blockUntilUpdated();
try {
ServiceInstanceMetadataUtils.refreshMetadataAndInstance(serviceInstance);
@@@ -1566,34 -1535,6 +1588,35 @@@
}
}
+ private void doRegisterServiceInstance(ServiceInstance serviceInstance) {
+ // register instance only when at least one service is exported.
+ if (serviceInstance.getPort() > 0) {
+ publishMetadataToRemote(serviceInstance);
+ logger.info("Start registering instance address to registry.");
+ getServiceDiscoveries().forEach(serviceDiscovery ->
+ {
+ ServiceInstance serviceInstanceForRegistry = new DefaultServiceInstance((DefaultServiceInstance) serviceInstance);
+ calInstanceRevision(serviceDiscovery, serviceInstanceForRegistry);
+ if (logger.isDebugEnabled()) {
+ logger.info("Start registering instance address to registry" + serviceDiscovery.getUrl() + ", instance " + serviceInstanceForRegistry);
+ }
+ // register metadata
+ serviceDiscovery.register(serviceInstanceForRegistry);
+ });
+ }
+ }
+
+ private void publishMetadataToRemote(ServiceInstance serviceInstance) {
+// InMemoryWritableMetadataService localMetadataService = (InMemoryWritableMetadataService)WritableMetadataService.getDefaultExtension();
+// localMetadataService.blockUntilUpdated();
+ if (logger.isInfoEnabled()) {
+ logger.info("Start publishing metadata to remote center, this only makes sense for applications enabled remote metadata center.");
+ }
+ RemoteMetadataServiceImpl remoteMetadataService = applicationModel.getBeanFactory().getBean(RemoteMetadataServiceImpl.class);
+ remoteMetadataService.publishMetadata(serviceInstance.getServiceName());
+ }
+
++
private void unregisterServiceInstance() {
if (serviceInstance != null) {
getServiceDiscoveries().forEach(serviceDiscovery -> {
diff --cc dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
index ece4e47,45841ad..84a9807
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
@@@ -22,10 -30,21 +30,22 @@@ import org.apache.dubbo.config.annotati
import org.apache.dubbo.config.annotation.Reference;
import org.apache.dubbo.config.api.DemoService;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+ import org.apache.dubbo.config.context.ConfigManager;
import org.apache.dubbo.config.provider.impl.DemoServiceImpl;
+
+ import org.apache.dubbo.metadata.report.MetadataReport;
+ import org.apache.dubbo.metadata.report.MetadataReportInstance;
+ import org.apache.dubbo.rpc.Exporter;
+ import org.apache.dubbo.rpc.ProxyFactory;
+ import org.apache.dubbo.rpc.listener.ListenerInvokerWrapper;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.apache.curator.test.TestingServer;
+ import org.apache.dubbo.rpc.model.ConsumerModel;
+ import org.apache.dubbo.rpc.model.ServiceMetadata;
+ import org.apache.dubbo.rpc.model.ServiceRepository;
+ import org.apache.dubbo.rpc.protocol.injvm.InjvmInvoker;
+ import org.apache.dubbo.rpc.protocol.injvm.InjvmProtocol;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --cc dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/JavaConfigBeanTest.java
index b3ccfdd,43be931..2f216c0
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/JavaConfigBeanTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/JavaConfigBeanTest.java
@@@ -28,12 -28,10 +28,12 @@@ import org.apache.dubbo.config.context.
import org.apache.dubbo.config.spring.api.DemoService;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.apache.dubbo.config.spring.impl.DemoServiceImpl;
- import org.apache.dubbo.config.spring.registrycenter.DefaultSingleRegistryCenter;
- import org.apache.dubbo.config.spring.registrycenter.SingleRegistryCenter;
+ import org.apache.dubbo.config.spring.registrycenter.RegistryCenter;
+ import org.apache.dubbo.config.spring.registrycenter.ZookeeperSingleRegistryCenter;
import org.apache.dubbo.rpc.Constants;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
diff --cc dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/annotation/EnableDubboConfigTest.java
index d934565,666e0f1..4c309df
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/annotation/EnableDubboConfigTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/annotation/EnableDubboConfigTest.java
@@@ -23,11 -23,12 +23,12 @@@ import org.apache.dubbo.config.MonitorC
import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.ProviderConfig;
import org.apache.dubbo.config.RegistryConfig;
-
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.context.ConfigManager;
- import org.apache.dubbo.config.spring.registrycenter.ZooKeeperServer;
+ import org.apache.dubbo.config.spring.registrycenter.RegistryCenter;
+ import org.apache.dubbo.config.spring.registrycenter.ZookeeperMultipleRegistryCenter;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --cc dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue7003/Issue7003Test.java
index 72bb370,869770b..e5714d4
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue7003/Issue7003Test.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue7003/Issue7003Test.java
@@@ -22,10 -22,9 +22,10 @@@ import org.apache.dubbo.config.bootstra
import org.apache.dubbo.config.spring.ReferenceBean;
import org.apache.dubbo.config.spring.api.HelloService;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
- import org.apache.dubbo.config.spring.registrycenter.DefaultSingleRegistryCenter;
- import org.apache.dubbo.config.spring.registrycenter.SingleRegistryCenter;
+ import org.apache.dubbo.config.spring.registrycenter.ZookeeperSingleRegistryCenter;
+ import org.apache.dubbo.config.spring.registrycenter.RegistryCenter;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
diff --cc dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/javaconfig/JavaConfigReferenceBeanTest.java
index 7fdb76d,f93bf06..73ca355
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/javaconfig/JavaConfigReferenceBeanTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/javaconfig/JavaConfigReferenceBeanTest.java
@@@ -24,19 -24,17 +24,21 @@@ import org.apache.dubbo.config.spring.R
import org.apache.dubbo.config.spring.api.DemoService;
import org.apache.dubbo.config.spring.api.HelloService;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
+import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
import org.apache.dubbo.config.spring.impl.HelloServiceImpl;
import org.apache.dubbo.config.spring.reference.ReferenceBeanBuilder;
+import org.apache.dubbo.config.spring.registrycenter.ZooKeeperServer;
+ import org.apache.dubbo.config.spring.registrycenter.RegistryCenter;
+ import org.apache.dubbo.config.spring.registrycenter.ZookeeperMultipleRegistryCenter;
import org.apache.dubbo.rpc.service.GenericException;
import org.apache.dubbo.rpc.service.GenericService;
+
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@@ -62,14 -52,15 +56,17 @@@ public class JavaConfigReferenceBeanTes
@BeforeEach
public void setUp() {
+ multipleRegistryCenter = new ZookeeperMultipleRegistryCenter();
+ multipleRegistryCenter.startup();
DubboBootstrap.reset();
+ SpringExtensionInjector.clearContexts();
}
@AfterEach
public void tearDown() {
DubboBootstrap.reset();
+ multipleRegistryCenter.shutdown();
+ SpringExtensionInjector.clearContexts();
}
@Test
diff --cc dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/MetadataReportInstance.java
index c63b09a1,08040ee..9484ebd
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/MetadataReportInstance.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/MetadataReportInstance.java
@@@ -50,16 -49,18 +50,19 @@@ public class MetadataReportInstance
if (METADATA_REPORT_KEY.equals(url.getProtocol())) {
String protocol = url.getParameter(METADATA_REPORT_KEY, DEFAULT_DIRECTORY);
url = URLBuilder.from(url)
- .setProtocol(protocol)
- .removeParameter(METADATA_REPORT_KEY)
- .build();
+ .setProtocol(protocol)
+ .setScopeModel(config.getScopeModel())
+ .removeParameter(METADATA_REPORT_KEY)
+ .build();
}
- url = url.addParameterIfAbsent(APPLICATION_KEY, ApplicationModel.getApplicationConfig().getName());
+ url = url.addParameterIfAbsent(APPLICATION_KEY, applicationModel.getCurrentConfig().getName());
String relatedRegistryId = config.getRegistry() == null ? DEFAULT_KEY : config.getRegistry();
-// RegistryConfig registryConfig = ApplicationModel.getConfigManager().getRegistry(relatedRegistryId)
+// RegistryConfig registryConfig = applicationModel.getConfigManager().getRegistry(relatedRegistryId)
// .orElseThrow(() -> new IllegalStateException("Registry id " + relatedRegistryId + " does not exist."));
- metadataReports.put(relatedRegistryId, metadataReportFactory.getMetadataReport(url));
+ MetadataReport metadataReport = metadataReportFactory.getMetadataReport(url);
+ if (metadataReport != null) {
+ metadataReports.put(relatedRegistryId, metadataReport);
+ }
init.set(true);
}
@@@ -80,9 -81,9 +83,9 @@@
}
- private static void checkInit() {
+ private void checkInit() {
if (!init.get()) {
- throw new IllegalStateException("the metadata report was not inited.");
+ throw new IllegalStateException("the metadata report was not initialized.");
}
}
diff --cc dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/DefaultServiceInstance.java
index e5fa427,e6b5923..bfdc191
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/DefaultServiceInstance.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/DefaultServiceInstance.java
@@@ -29,9 -27,8 +29,10 @@@ import java.util.Objects
import java.util.SortedMap;
import java.util.TreeMap;
+import static org.apache.dubbo.common.constants.CommonConstants.REVISION_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.SCOPE_MODEL;
import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.ENDPOINTS;
+ import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.EXPORTED_SERVICES_REVISION_PROPERTY_NAME;
/**
* The default implementation of {@link ServiceInstance}.
diff --cc dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java
index 44357c7,8aca204..1eaa2dd
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java
@@@ -102,9 -87,16 +87,16 @@@ public class ServiceDiscoveryRegistry i
public ServiceDiscoveryRegistry(URL registryURL) {
this.registryURL = registryURL;
this.serviceDiscovery = createServiceDiscovery(registryURL);
- this.writableMetadataService = WritableMetadataService.getDefaultExtension();
+ this.writableMetadataService = WritableMetadataService.getDefaultExtension(registryURL.getScopeModel());
}
+ // Currently for test purpose
+ protected ServiceDiscoveryRegistry(URL registryURL, ServiceDiscovery serviceDiscovery, WritableMetadataService writableMetadataService) {
+ this.registryURL = registryURL;
+ this.serviceDiscovery = serviceDiscovery;
+ this.writableMetadataService = writableMetadataService;
+ }
+
public ServiceDiscovery getServiceDiscovery() {
return serviceDiscovery;
}
diff --cc dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java
index ba4f958,bf982dc..108292a
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java
@@@ -60,12 -61,24 +62,29 @@@ public class ServiceDiscoveryRegistryDi
private volatile boolean enableConfigurationListen = true;
private volatile List<URL> originalUrls = null; // initial for null
private volatile Map<String, String> overrideQueryMap;
+ private volatile Map<String, String> consumerFirstQueryMap;
+ private final ApplicationModel applicationModel;
public ServiceDiscoveryRegistryDirectory(Class<T> serviceType, URL url) {
super(serviceType, url);
+ applicationModel = getApplicationModel(url.getScopeModel());
+ consumerConfigurationListener = new ConsumerConfigurationListener(applicationModel);
++
+ Set<ProviderFirstParams> providerFirstParams = ExtensionLoader.getExtensionLoader(ProviderFirstParams.class).getSupportedExtensionInstances();
+ if (CollectionUtils.isEmpty(providerFirstParams)) {
+ consumerFirstQueryMap = queryMap;
+ } else {
+ consumerFirstQueryMap = new HashMap<>(queryMap);
+ for (ProviderFirstParams paramsFilter : providerFirstParams) {
+ if (paramsFilter.params() == null) {
+ break;
+ }
+ for (String keyToRemove : paramsFilter.params()) {
+ consumerFirstQueryMap.remove(keyToRemove);
+ }
+ }
+ }
++
}
@Override
diff --cc dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceNameMapping.java
index 4a63368,018d665..c963b72
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceNameMapping.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceNameMapping.java
@@@ -29,10 -29,8 +29,9 @@@ import org.apache.dubbo.metadata.report
import org.apache.dubbo.metadata.report.MetadataReportInstance;
import org.apache.dubbo.registry.client.RegistryClusterIdentifier;
import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ScopeModelAware;
import java.util.Collections;
- import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
@@@ -46,77 -45,63 +45,70 @@@ public class MetadataServiceNameMappin
private static final List<String> IGNORED_SERVICE_INTERFACES = Collections.singletonList(MetadataService.class.getName());
private static final int CAS_RETRY_TIMES = 6;
+ private MetadataReportInstance metadataReportInstance;
@Override
- public void map(URL url) {
- execute(() -> {
+ public boolean map(URL url) {
- if (CollectionUtils.isEmpty(ApplicationModel.getConfigManager().getMetadataConfigs())) {
- return false;
- }
- String serviceInterface = url.getServiceInterface();
- if (IGNORED_SERVICE_INTERFACES.contains(serviceInterface)) {
- return false;
- }
- String registryCluster = getRegistryCluster(url);
- MetadataReport metadataReport = MetadataReportInstance.getMetadataReport(registryCluster);
-
- if (metadataReport.registerServiceAppMapping(serviceInterface, getName(), url)) {
- // MetadataReport support directly register service-app mapping
- return true;
- }
+ if (CollectionUtils.isEmpty(applicationModel.getApplicationConfigManager().getMetadataConfigs())) {
- return;
++ return false;
+ }
+ String serviceInterface = url.getServiceInterface();
+ if (IGNORED_SERVICE_INTERFACES.contains(serviceInterface)) {
- return;
++ return false;
+ }
+ String registryCluster = getRegistryCluster(url);
+ MetadataReport metadataReport = metadataReportInstance.getMetadataReport(registryCluster);
- int currentRetryTimes = 1;
- boolean succeeded = false;
- String newConfigContent = getName();
- do {
- ConfigItem configItem = metadataReport.getConfigItem(serviceInterface, DEFAULT_MAPPING_GROUP);
- String oldConfigContent = configItem.getContent();
- if (StringUtils.isNotEmpty(oldConfigContent)) {
- boolean contains = StringUtils.isContains(oldConfigContent, getName());
- if (contains) {
- break;
- }
- newConfigContent = oldConfigContent + COMMA_SEPARATOR + getName();
+ String appName = applicationModel.getApplicationName();
+ if (metadataReport.registerServiceAppMapping(serviceInterface, appName, url)) {
+ // MetadataReport support directly register service-app mapping
- return;
++ return true;
}
- succeeded = metadataReport.registerServiceAppMapping(serviceInterface, DEFAULT_MAPPING_GROUP, newConfigContent, configItem.getTicket());
- } while (!succeeded && currentRetryTimes++ <= CAS_RETRY_TIMES);
- if (!succeeded) {
+ int currentRetryTimes = 1;
- boolean success;
++ boolean succeeded = false;
+ String newConfigContent = appName;
+ do {
+ ConfigItem configItem = metadataReport.getConfigItem(serviceInterface, DEFAULT_MAPPING_GROUP);
+ String oldConfigContent = configItem.getContent();
+ if (StringUtils.isNotEmpty(oldConfigContent)) {
+ boolean contains = StringUtils.isContains(oldConfigContent, appName);
+ if (contains) {
+ break;
+ }
+ newConfigContent = oldConfigContent + COMMA_SEPARATOR + appName;
+ }
- success = metadataReport.registerServiceAppMapping(serviceInterface, DEFAULT_MAPPING_GROUP, newConfigContent, configItem.getTicket());
- } while (!success && currentRetryTimes++ <= CAS_RETRY_TIMES);
- });
++ succeeded = metadataReport.registerServiceAppMapping(serviceInterface, DEFAULT_MAPPING_GROUP, newConfigContent, configItem.getTicket());
++ } while (!succeeded && currentRetryTimes++ <= CAS_RETRY_TIMES);
++ if (!succeeded) {
+ throw new RuntimeException();
+ }
+
+ return true;
}
@Override
public Set<String> get(URL url) {
- Set<String> serviceNames = new LinkedHashSet<>();
- execute(() -> {
- String serviceInterface = url.getServiceInterface();
- String registryCluster = getRegistryCluster(url);
- MetadataReport metadataReport = metadataReportInstance.getMetadataReport(registryCluster);
- Set<String> apps = metadataReport.getServiceAppMapping(serviceInterface, url);
- serviceNames.addAll(apps);
- });
- return serviceNames;
+ String serviceInterface = url.getServiceInterface();
+ String registryCluster = getRegistryCluster(url);
- MetadataReport metadataReport = MetadataReportInstance.getMetadataReport(registryCluster);
++ MetadataReport metadataReport = metadataReportInstance.getMetadataReport(registryCluster);
+ return metadataReport.getServiceAppMapping(serviceInterface, url);
}
@Override
public Set<String> getAndListen(URL url, MappingListener mappingListener) {
- Set<String> serviceNames = new LinkedHashSet<>();
- execute(() -> {
- String serviceInterface = url.getServiceInterface();
- String registryCluster = getRegistryCluster(url);
- MetadataReport metadataReport = metadataReportInstance.getMetadataReport(registryCluster);
- Set<String> apps = metadataReport.getServiceAppMapping(serviceInterface, mappingListener, url);
- serviceNames.addAll(apps);
- });
- return serviceNames;
+ String serviceInterface = url.getServiceInterface();
+ String registryCluster = getRegistryCluster(url);
- MetadataReport metadataReport = MetadataReportInstance.getMetadataReport(registryCluster);
++ MetadataReport metadataReport = metadataReportInstance.getMetadataReport(registryCluster);
+ return metadataReport.getServiceAppMapping(serviceInterface, mappingListener, url);
}
+ @Override
+ public void setApplicationModel(ApplicationModel applicationModel) {
+ super.setApplicationModel(applicationModel);
+ metadataReportInstance = applicationModel.getBeanFactory().getBean(MetadataReportInstance.class);
+ }
+
protected String getRegistryCluster(URL url) {
String registryCluster = RegistryClusterIdentifier.getExtension(url).providerKey(url);
if (registryCluster == null) {
diff --cc dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.java
index cc0f612,b3d6efb..ea0723c
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.java
@@@ -40,14 -58,12 +58,14 @@@ public class ServiceInstanceMetadataCus
@Override
public void customize(ServiceInstance serviceInstance) {
- ExtensionLoader<MetadataParamsFilter> loader = ExtensionLoader.getExtensionLoader(MetadataParamsFilter.class);
+ ApplicationModel applicationModel = serviceInstance.getApplicationModel();
+ ExtensionLoader<MetadataParamsFilter> loader = applicationModel.getExtensionLoader(MetadataParamsFilter.class);
+ Set<MetadataParamsFilter> paramsFilters = loader.getSupportedExtensionInstances();
InMemoryWritableMetadataService localMetadataService
- = (InMemoryWritableMetadataService) WritableMetadataService.getDefaultExtension();
+ = (InMemoryWritableMetadataService) WritableMetadataService.getDefaultExtension(applicationModel);
// pick the first interface metadata available.
- // FIXME, check the same key in different urls has the same value
+ // FIXME, check the same key in different urls have the same value
Map<String, MetadataInfo> metadataInfos = localMetadataService.getMetadataInfos();
if (CollectionUtils.isEmptyMap(metadataInfos)) {
return;
@@@ -57,19 -73,19 +75,19 @@@
return;
}
MetadataInfo.ServiceInfo serviceInfo = metadataInfo.getServices().values().iterator().next();
- Map<String, String> allParams = new HashMap<>(serviceInfo.getUrl().getParameters());
+ URL url = serviceInfo.getUrl();
+ List<MetadataParamsFilter> paramsFilters = loader.getActivateExtension(url, "params-filter");
+ Map<String, String> allParams = new HashMap<>(url.getParameters());
// load instance params users want to load.
- // TODO, duplicate logic with that in ApplicationConfig
+ // TODO, duplicate snippet in ApplicationConfig
+ Map<String, String> extraParameters = Collections.emptyMap();
- Set<InfraAdapter> adapters = ExtensionLoader.getExtensionLoader(InfraAdapter.class).getSupportedExtensionInstances();
+ Set<InfraAdapter> adapters = applicationModel.getExtensionLoader(InfraAdapter.class).getSupportedExtensionInstances();
if (CollectionUtils.isNotEmpty(adapters)) {
Map<String, String> inputParameters = new HashMap<>();
- inputParameters.put(APPLICATION_KEY, ApplicationModel.getName());
+ inputParameters.put(APPLICATION_KEY, applicationModel.getApplicationName());
for (InfraAdapter adapter : adapters) {
- Map<String, String> extraParameters = adapter.getExtraAttributes(inputParameters);
- if (CollectionUtils.isNotEmptyMap(extraParameters)) {
- extraParameters.forEach(allParams::putIfAbsent);
- }
+ extraParameters = adapter.getExtraAttributes(inputParameters);
}
}
diff --cc dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataUtils.java
index 8cafaac,5c0e8ea..ddf4bd2
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataUtils.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataUtils.java
@@@ -285,6 -292,13 +292,13 @@@ public class ServiceInstanceMetadataUti
});
}
+ private static void reportMetadataToRemote(ServiceInstance serviceInstance) {
+ if (REMOTE_METADATA_STORAGE_TYPE.equalsIgnoreCase(getMetadataStorageType(serviceInstance))) {
- RemoteMetadataServiceImpl remoteMetadataService = MetadataUtils.getRemoteMetadataService();
- remoteMetadataService.publishMetadata(serviceInstance.getServiceName());
++ RemoteMetadataServiceImpl remoteMetadataService = MetadataUtils.getRemoteMetadataService(serviceInstance.getApplicationModel());
++ remoteMetadataService.publishMetadata(serviceInstance.getApplicationModel().getApplicationName());
+ }
+ }
+
/**
* Set the default parameters via the specified {@link URL providerURL}
*
diff --cc dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/store/InMemoryWritableMetadataService.java
index 4026103,ddbb163..4cd2618
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/store/InMemoryWritableMetadataService.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/store/InMemoryWritableMetadataService.java
@@@ -75,9 -74,9 +75,9 @@@ import static org.apache.dubbo.rpc.Cons
* @see WritableMetadataService
* @since 2.7.5
*/
-public class InMemoryWritableMetadataService implements WritableMetadataService {
+public class InMemoryWritableMetadataService implements WritableMetadataService, ScopeModelAware {
- final Logger logger = LoggerFactory.getLogger(getClass());
+ Logger logger = LoggerFactory.getLogger(getClass());
private final Lock lock = new ReentrantLock();
diff --cc dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleListener.java
index 0299761,7c76b38..2a5dbf2
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleListener.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleListener.java
@@@ -47,15 -48,25 +49,25 @@@ import java.util.concurrent.atomic.Atom
import static org.apache.dubbo.common.constants.RegistryConstants.INIT;
+ /**
+ * Listens to {@MigrationRule} from Config Center.
+ *
+ * - Migration rule is of consumer application scope.
+ * - Listener is shared among all invokers (interfaces), it keeps the relation between interface and handler.
+ *
+ * There're two execution points:
+ * - Refer, invoker behaviour is determined with default rule.
+ * - Rule change, invoker behaviour is changed according to the newly received rule.
+ */
@Activate
-public class MigrationRuleListener implements RegistryProtocolListener, ConfigurationListener {
+public class MigrationRuleListener implements RegistryProtocolListener, ConfigurationListener, ScopeModelAware {
private static final Logger logger = LoggerFactory.getLogger(MigrationRuleListener.class);
private static final String DUBBO_SERVICEDISCOVERY_MIGRATION = "DUBBO_SERVICEDISCOVERY_MIGRATION";
private static final String MIGRATION_DELAY_KEY = "dubbo.application.migration.delay";
- private final String RULE_KEY = ApplicationModel.getName() + ".migration";
+ private String ruleKey;
- private final Map<MigrationInvoker, MigrationRuleHandler> handlers = new ConcurrentHashMap<>();
- private final LinkedBlockingQueue<String> ruleQueue = new LinkedBlockingQueue<>();
+ protected final Map<MigrationInvoker, MigrationRuleHandler> handlers = new ConcurrentHashMap<>();
+ protected final LinkedBlockingQueue<String> ruleQueue = new LinkedBlockingQueue<>();
private final AtomicBoolean executorSubmit = new AtomicBoolean(false);
private final ExecutorService ruleManageExecutor = Executors.newFixedThreadPool(1, new NamedThreadFactory("Dubbo-Migration-Listener"));
@@@ -95,9 -98,9 +110,9 @@@
setRawRule(INIT);
}
- String localRawRule = ApplicationModel.getEnvironment().getLocalMigrationRule();
+ String localRawRule = applicationModel.getApplicationEnvironment().getLocalMigrationRule();
if (!StringUtils.isEmpty(localRawRule)) {
- Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("DubboMigrationRuleDelayWorker", true))
+ localRuleMigrationFuture = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("DubboMigrationRuleDelayWorker", true))
.schedule(() -> {
if (this.rawRule.equals(INIT)) {
this.process(new ConfigChangedEvent(null, null, localRawRule));
@@@ -226,8 -229,14 +241,14 @@@
@Override
public void onDestroy() {
if (configuration != null) {
- configuration.removeListener(RULE_KEY, this);
+ configuration.removeListener(ruleKey, this);
}
+ if (ruleMigrationFuture != null) {
+ ruleMigrationFuture.cancel(true);
+ }
+ if (localRuleMigrationFuture != null) {
+ localRuleMigrationFuture.cancel(true);
+ }
}
public Map<MigrationInvoker, MigrationRuleHandler> getHandlers() {
diff --cc dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
index 9651696,a6997b0..25543bc
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
@@@ -854,14 -817,14 +867,16 @@@ public class RegistryProtocol implement
logger.warn(t.getMessage(), t);
}
try {
- Map<URL, NotifyListener> overrideListeners = getProviderConfigurationListener(subscribeUrl).getOverrideListeners();
- NotifyListener listener = overrideListeners.remove(registerUrl);
- registry.unsubscribe(subscribeUrl, listener);
- ApplicationModel applicationModel = getApplicationModel(registerUrl.getScopeModel());
- if (applicationModel.getApplicationEnvironment().getConfiguration().convert(Boolean.class, ENABLE_CONFIGURATION_LISTEN, true)) {
- applicationModel.getExtensionLoader(GovernanceRuleRepository.class).getDefaultExtension()
- .removeListener(subscribeUrl.getServiceKey() + CONFIGURATORS_SUFFIX,
- serviceConfigurationListeners.remove(subscribeUrl.getServiceKey()));
+ if (subscribeUrl != null) {
- NotifyListener listener = RegistryProtocol.this.overrideListeners.remove(subscribeUrl);
++ Map<URL, NotifyListener> overrideListeners = getProviderConfigurationListener(subscribeUrl).getOverrideListeners();
++ NotifyListener listener = overrideListeners.remove(registerUrl);
+ registry.unsubscribe(subscribeUrl, listener);
- if (ApplicationModel.getEnvironment().getConfiguration().convert(Boolean.class, org.apache.dubbo.registry.Constants.ENABLE_CONFIGURATION_LISTEN, true)) {
- ExtensionLoader.getExtensionLoader(GovernanceRuleRepository.class).getDefaultExtension()
++ ApplicationModel applicationModel = getApplicationModel(registerUrl.getScopeModel());
++ if (applicationModel.getApplicationEnvironment().getConfiguration().convert(Boolean.class, ENABLE_CONFIGURATION_LISTEN, true)) {
++ applicationModel.getExtensionLoader(GovernanceRuleRepository.class).getDefaultExtension()
+ .removeListener(subscribeUrl.getServiceKey() + CONFIGURATORS_SUFFIX,
- serviceConfigurationListeners.get(subscribeUrl.getServiceKey()));
++ serviceConfigurationListeners.remove(subscribeUrl.getServiceKey()));
+ }
}
} catch (Throwable t) {
logger.warn(t.getMessage(), t);
diff --cc dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/CacheableFailbackRegistry.java
index e8ce4f4,bd8c062..e13d29d
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/CacheableFailbackRegistry.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/CacheableFailbackRegistry.java
@@@ -31,8 -32,7 +32,6 @@@ import org.apache.dubbo.common.utils.Co
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.common.utils.UrlUtils;
import org.apache.dubbo.registry.NotifyListener;
- import org.apache.dubbo.rpc.model.ScopeModel;
- import org.apache.dubbo.rpc.model.ScopeModelUtil;
-import org.apache.dubbo.registry.ProviderFirstParams;
import java.util.ArrayList;
import java.util.Collection;
diff --cc dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/DefaultServiceInstanceTest.java
index 2b65cb9,7369c27..13fde8e
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/DefaultServiceInstanceTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/DefaultServiceInstanceTest.java
@@@ -38,9 -40,17 +42,16 @@@ public class DefaultServiceInstanceTes
public DefaultServiceInstance instance;
public static DefaultServiceInstance createInstance() {
- DefaultServiceInstance instance = new DefaultServiceInstance("A", "127.0.0.1", 8080, ApplicationModel.defaultModel());
- instance.getMetadata().put("dubbo.metadata-service.urls", "[ \"dubbo://192.168.0.102:20881/com.alibaba.cloud.dubbo.service.DubboMetadataService?anyhost=true&application=spring-cloud-alibaba-dubbo-provider&bind.ip=192.168.0.102&bind.port=20881&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&group=spring-cloud-alibaba-dubbo-provider&interface=com.alibaba.cloud.dubbo.service.DubboMetadataService&methods=getAllServiceKeys,getServiceRestMetadata,getExportedURLs,getAllExported [...]
- instance.getMetadata().put("dubbo.metadata-service.url-params", "{\"dubbo\":{\"application\":\"dubbo-provider-demo\",\"deprecated\":\"false\",\"group\":\"dubbo-provider-demo\",\"version\":\"1.0.0\",\"timestamp\":\"1564845042651\",\"dubbo\":\"2.0.2\",\"provider.host\":\"192.168.0.102\",\"provider.port\":\"20880\"}}");
- DefaultServiceInstance instance = new DefaultServiceInstance("A", "127.0.0.1", 20880);
++ DefaultServiceInstance instance = new DefaultServiceInstance("A", "127.0.0.1", 20880, ApplicationModel.defaultModel());
+ Map<String, String> metadata = instance.getMetadata();
+ metadata.put(METADATA_STORAGE_TYPE_PROPERTY_NAME, "remote");
+ metadata.put(EXPORTED_SERVICES_REVISION_PROPERTY_NAME, "111");
+ metadata.put("site", "dubbo");
+
+ Map<String, Integer> protocolPorts = new HashMap<>();
+ protocolPorts.put("rest", 8080);
+ protocolPorts.put("dubbo", 20880);
+ setEndpoints(instance, protocolPorts);
-
return instance;
}
diff --cc dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/MigrationRuleListenerTest.java
index c2bde4b,10e8703..406b85d
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/MigrationRuleListenerTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/MigrationRuleListenerTest.java
@@@ -25,32 -29,60 +29,61 @@@ import org.mockito.ArgumentCaptor
import org.mockito.Mockito;
public class MigrationRuleListenerTest {
+
+ private String localRule = "key: demo-consumer\n" +
+ "step: APPLICATION_FIRST\n" +
+ "threshold: 1.0\n" +
+ "proportion: 60\n" +
+ "delay: 60\n" +
+ "force: false\n" +
+ "interfaces:\n" +
+ " - serviceKey: DemoService:1.0.0\n" +
+ " threshold: 0.5\n" +
+ " proportion: 30\n" +
+ " delay: 30\n" +
+ " force: true\n" +
+ " step: APPLICATION_FIRST\n" +
+ " - serviceKey: GreetingService:1.0.0\n" +
+ " step: FORCE_APPLICATION";
+
+ private String remoteRule = "key: demo-consumer\n" +
+ "step: FORCE_APPLICATION\n" +
+ "threshold: 1.0\n" +
+ "proportion: 60\n" +
+ "delay: 60\n" +
+ "force: false\n" +
+ "interfaces:\n" +
+ " - serviceKey: DemoService:1.0.0\n" +
+ " threshold: 0.5\n" +
+ " proportion: 30\n" +
+ " delay: 30\n" +
+ " force: true\n" +
+ " step: FORCE_APPLICATION\n" +
+ " - serviceKey: GreetingService:1.0.0\n" +
+ " step: FORCE_INTERFACE";
+
+ private String dynamicRemoteRule = "key: demo-consumer\n" +
+ "step: APPLICATION_FIRST\n" +
+ "threshold: 1.0\n" +
+ "proportion: 60\n" +
+ "delay: 60\n" +
+ "force: false\n" +
+ "interfaces:\n";
+
+ /**
+ * Listener started with config center and local rule, no initial remote rule.
+ * Check local rule take effect
+ */
@Test
public void test() throws InterruptedException {
- String rule = "key: demo-consumer\n" +
- "step: APPLICATION_FIRST\n" +
- "threshold: 1.0\n" +
- "proportion: 60\n" +
- "delay: 60\n" +
- "force: false\n" +
- "interfaces:\n" +
- " - serviceKey: DemoService:1.0.0\n" +
- " threshold: 0.5\n" +
- " proportion: 30\n" +
- " delay: 30\n" +
- " force: true\n" +
- " step: APPLICATION_FIRST\n" +
- " - serviceKey: GreetingService:1.0.0\n" +
- " step: FORCE_APPLICATION";
-
DynamicConfiguration dynamicConfiguration = Mockito.mock(DynamicConfiguration.class);
- ApplicationModel.getEnvironment().setDynamicConfiguration(dynamicConfiguration);
- ApplicationModel.getEnvironment().setLocalMigrationRule(localRule);
+ ApplicationModel.reset();
+ ApplicationModel.defaultModel().getApplicationEnvironment().setDynamicConfiguration(dynamicConfiguration);
- ApplicationModel.defaultModel().getApplicationEnvironment().setLocalMigrationRule(rule);
++ ApplicationModel.defaultModel().getApplicationEnvironment().setLocalMigrationRule(localRule);
ApplicationConfig applicationConfig = new ApplicationConfig();
applicationConfig.setName("demo-consumer");
- ApplicationModel.getConfigManager().setApplication(applicationConfig);
+ ApplicationModel.defaultModel().getApplicationConfigManager().setApplication(applicationConfig);
URL consumerURL = Mockito.mock(URL.class);
Mockito.when(consumerURL.getServiceKey()).thenReturn("Test");
@@@ -60,11 -92,11 +93,12 @@@
MigrationRuleHandler<?> handler = Mockito.mock(MigrationRuleHandler.class, Mockito.withSettings().verboseLogging());
MigrationRuleListener migrationRuleListener = new MigrationRuleListener();
+
MigrationInvoker<?> migrationInvoker = Mockito.mock(MigrationInvoker.class);
migrationRuleListener.getHandlers().put(migrationInvoker, handler);
+ migrationRuleListener.setApplicationModel(ApplicationModel.defaultModel());
- Thread.sleep(5000);
+ Thread.sleep(2000);
Mockito.verify(handler, Mockito.timeout(5000)).doMigrate(Mockito.any());
migrationRuleListener.onRefer(null, migrationInvoker, consumerURL, null);
diff --cc dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/model/MigrationRuleTest.java
index 1091eee,31a254a..c89ebee
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/model/MigrationRuleTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/model/MigrationRuleTest.java
@@@ -18,11 -18,10 +18,12 @@@ package org.apache.dubbo.registry.clien
import org.apache.dubbo.common.URL;
import org.apache.dubbo.metadata.ServiceNameMapping;
- import org.apache.dubbo.metadata.WritableMetadataService;
+import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ModuleModel;
import org.junit.jupiter.api.Test;
+ import org.mockito.ArgumentMatchers;
+ import org.mockito.MockedStatic;
import org.mockito.Mockito;
import java.util.Collections;
@@@ -33,67 -42,71 +44,76 @@@ public class MigrationRuleTest
@Test
public void test_parse() {
- String rule = "key: demo-consumer\n" +
- "step: APPLICATION_FIRST\n" +
- "threshold: 1.0\n" +
- "proportion: 60\n" +
- "delay: 60\n" +
- "force: false\n" +
- "interfaces:\n" +
- " - serviceKey: DemoService:1.0.0\n" +
- " threshold: 0.5\n" +
- " proportion: 30\n" +
- " delay: 30\n" +
- " force: true\n" +
- " step: APPLICATION_FIRST\n" +
- " - serviceKey: GreetingService:1.0.0\n" +
- " step: FORCE_APPLICATION\n" +
- "applications:\n" +
- " - serviceKey: TestApplication\n" +
- " threshold: 0.3\n" +
- " proportion: 20\n" +
- " delay: 10\n" +
- " force: false\n" +
- " step: FORCE_INTERFACE\n";
+ try (MockedStatic<ServiceNameMapping> mockStaticMapping = Mockito.mockStatic(ServiceNameMapping.class, withSettings().defaultAnswer(CALLS_REAL_METHODS))) {
+ mockStaticMapping.when(ServiceNameMapping::getDefaultExtension).thenReturn(mapping);
+ when(mapping.getServices(any())).thenReturn(Collections.emptySet());
- MigrationRule migrationRule = MigrationRule.parse(rule);
- assertEquals("demo-consumer", migrationRule.getKey());
- assertEquals(MigrationStep.APPLICATION_FIRST, migrationRule.getStep());
- assertEquals(1.0f, migrationRule.getThreshold());
- assertEquals(60, migrationRule.getProportion());
- assertEquals(60, migrationRule.getDelay());
- assertEquals(false, migrationRule.getForce());
+ String rule = "key: demo-consumer\n" +
+ "step: APPLICATION_FIRST\n" +
+ "threshold: 1.0\n" +
+ "proportion: 60\n" +
+ "delay: 60\n" +
+ "force: false\n" +
+ "interfaces:\n" +
+ " - serviceKey: DemoService:1.0.0\n" +
+ " threshold: 0.5\n" +
+ " proportion: 30\n" +
+ " delay: 30\n" +
+ " force: true\n" +
+ " step: APPLICATION_FIRST\n" +
+ " - serviceKey: GreetingService:1.0.0\n" +
+ " step: FORCE_APPLICATION\n" +
+ "applications:\n" +
+ " - serviceKey: TestApplication\n" +
+ " threshold: 0.3\n" +
+ " proportion: 20\n" +
+ " delay: 10\n" +
+ " force: false\n" +
+ " step: FORCE_INTERFACE\n";
+
+ MigrationRule migrationRule = MigrationRule.parse(rule);
+ assertEquals("demo-consumer", migrationRule.getKey());
+ assertEquals(MigrationStep.APPLICATION_FIRST, migrationRule.getStep());
+ assertEquals(1.0f, migrationRule.getThreshold());
+ assertEquals(60, migrationRule.getProportion());
+ assertEquals(60, migrationRule.getDelay());
+ assertEquals(false, migrationRule.getForce());
- URL url = Mockito.mock(URL.class);
- Mockito.when(url.getDisplayServiceKey()).thenReturn("DemoService:1.0.0");
- Mockito.when(url.getParameter(ArgumentMatchers.eq(REGISTRY_CLUSTER_TYPE_KEY), anyString())).thenReturn("default");
- Mockito.when(url.getParameter(ArgumentMatchers.eq(REGISTRY_CLUSTER_TYPE_KEY), anyString())).thenReturn("default");
+ URL url = Mockito.mock(URL.class);
+ ModuleModel defaultModule = ApplicationModel.defaultModel().getDefaultModule();
+ url.setScopeModel(defaultModule);
+ Mockito.when(url.getDisplayServiceKey()).thenReturn("DemoService:1.0.0");
++ Mockito.when(url.getParameter(ArgumentMatchers.eq(REGISTRY_CLUSTER_TYPE_KEY), anyString())).thenReturn("default");
++ Mockito.when(url.getParameter(ArgumentMatchers.eq(REGISTRY_CLUSTER_TYPE_KEY), anyString())).thenReturn("default");
- assertEquals(migrationRule.getInterfaces().size(), 2);
+ assertEquals(migrationRule.getInterfaces().size(), 2);
- assertEquals(0.5f, migrationRule.getThreshold(url));
- assertEquals(30, migrationRule.getProportion(url));
- assertEquals(30, migrationRule.getDelay(url));
- assertEquals(true, migrationRule.getForce(url));
- assertEquals(MigrationStep.APPLICATION_FIRST, migrationRule.getStep(url));
+ assertEquals(0.5f, migrationRule.getThreshold(url));
+ assertEquals(30, migrationRule.getProportion(url));
+ assertEquals(30, migrationRule.getDelay(url));
+ assertEquals(true, migrationRule.getForce(url));
+ assertEquals(MigrationStep.APPLICATION_FIRST, migrationRule.getStep(url));
- Mockito.when(url.getDisplayServiceKey()).thenReturn("GreetingService:1.0.0");
- assertEquals(1.0f, migrationRule.getThreshold(url));
- assertEquals(60, migrationRule.getProportion(url));
- assertEquals(60, migrationRule.getDelay(url));
- assertEquals(false, migrationRule.getForce(url));
- assertEquals(MigrationStep.FORCE_APPLICATION, migrationRule.getStep(url));
+ Mockito.when(url.getDisplayServiceKey()).thenReturn("GreetingService:1.0.0");
+ assertEquals(1.0f, migrationRule.getThreshold(url));
+ assertEquals(60, migrationRule.getProportion(url));
+ assertEquals(60, migrationRule.getDelay(url));
+ assertEquals(false, migrationRule.getForce(url));
+ assertEquals(MigrationStep.FORCE_APPLICATION, migrationRule.getStep(url));
- Mockito.when(url.getDisplayServiceKey()).thenReturn("GreetingService:1.0.1");
- Mockito.when(url.getServiceInterface()).thenReturn("GreetingService");
- Set<String> services = new HashSet<>();
- services.add("TestApplication");
- when(mapping.getServices(any())).thenReturn(services);
- assertEquals(0.3f, migrationRule.getThreshold(url));
- assertEquals(20, migrationRule.getProportion(url));
- assertEquals(10, migrationRule.getDelay(url));
- assertEquals(false, migrationRule.getForce(url));
- assertEquals(MigrationStep.FORCE_INTERFACE, migrationRule.getStep(url));
- }
+ Mockito.when(url.getDisplayServiceKey()).thenReturn("GreetingService:1.0.1");
+ Mockito.when(url.getServiceInterface()).thenReturn("GreetingService");
+ WritableMetadataService metadataService = WritableMetadataService.getDefaultExtension(defaultModule);
+ metadataService.putCachedMapping(ServiceNameMapping.buildMappingKey(url), Collections.singleton("TestApplication"));
++
++ Set<String> services = new HashSet<>();
++ services.add("TestApplication");
++ when(mapping.getServices(any())).thenReturn(services);
+ assertEquals(0.3f, migrationRule.getThreshold(url));
+ assertEquals(20, migrationRule.getProportion(url));
+ assertEquals(10, migrationRule.getDelay(url));
+ assertEquals(false, migrationRule.getForce(url));
+ assertEquals(MigrationStep.FORCE_INTERFACE, migrationRule.getStep(url));
-
+ metadataService.removeCachedMapping("GreetingService");
}
}
diff --cc dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/support/ServiceOrientedRegistryTest.java
index 934ed20,e82b2b6..448ab72
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/support/ServiceOrientedRegistryTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/support/ServiceOrientedRegistryTest.java
@@@ -23,8 -23,8 +23,9 @@@ import org.apache.dubbo.metadata.Writab
import org.apache.dubbo.registry.NotifyListener;
import org.apache.dubbo.registry.client.ServiceDiscoveryRegistry;
import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ModuleModel;
+ import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@@ -83,15 -83,17 +84,20 @@@ public class ServiceOrientedRegistryTes
@BeforeEach
public void init() {
+ ApplicationModel applicationModel = ApplicationModel.defaultModel();
+ ModuleModel scopeModel = applicationModel.getDefaultModule();
+ registryURL.setScopeModel(scopeModel);
registry = ServiceDiscoveryRegistry.create(registryURL);
- metadataService = WritableMetadataService.getDefaultExtension();
+ metadataService = WritableMetadataService.getDefaultExtension(scopeModel);
notifyListener = new MyNotifyListener();
- ApplicationModel.getConfigManager().setApplication(new ApplicationConfig("Test"));
+ applicationModel.getApplicationConfigManager().setApplication(new ApplicationConfig("Test"));
}
+ @AfterAll
+ public static void clearUp() {
+ ApplicationModel.reset();
+ }
+
@Test
public void testSupports() {
assertTrue(ServiceDiscoveryRegistry.supports(registryURL));
diff --cc dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java
index be0c253,67f4c89..0048ca7
--- 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
@@@ -104,8 -110,8 +110,8 @@@ public class NacosServiceDiscovery exte
@Override
public List<ServiceInstance> getInstances(String serviceName) throws NullPointerException {
return ThrowableFunction.execute(namingService, service ->
- service.selectInstances(serviceName, true)
- .stream().map((i)->NacosNamingServiceUtils.toServiceInstance(registryURL, i))
- service.selectInstances(serviceName, Constants.DEFAULT_GROUP, true)
- .stream().map(NacosNamingServiceUtils::toServiceInstance)
++ service.selectInstances(serviceName, Constants.DEFAULT_GROUP, true)
++ .stream().map((i)->NacosNamingServiceUtils.toServiceInstance(registryURL, i))
.collect(Collectors.toList())
);
}
diff --cc dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtils.java
index 993e02a,d9e137c..d7fd458
--- a/dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtils.java
+++ b/dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtils.java
@@@ -76,12 -84,12 +85,12 @@@ public abstract class CuratorFrameworkU
}
- public static List<ServiceInstance> build(Collection<org.apache.curator.x.discovery.ServiceInstance<ZookeeperInstance>>
- instances) {
- return instances.stream().map(CuratorFrameworkUtils::build).collect(Collectors.toList());
+ public static List<ServiceInstance> build(URL registryUrl, Collection<org.apache.curator.x.discovery.ServiceInstance<ZookeeperInstance>>
- instances) {
++ instances) {
+ return instances.stream().map((i)->build(registryUrl, i)).collect(Collectors.toList());
}
- public static ServiceInstance build(org.apache.curator.x.discovery.ServiceInstance<ZookeeperInstance> instance) {
+ public static ServiceInstance build(URL registryUrl, org.apache.curator.x.discovery.ServiceInstance<ZookeeperInstance> instance) {
String name = instance.getName();
String host = instance.getAddress();
int port = instance.getPort();
diff --cc dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java
index 1c6a00b,05b84cb..d93d345
--- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java
+++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java
@@@ -118,14 -118,16 +118,17 @@@ public class DecodeableRpcResult extend
public void decode() throws Exception {
if (!hasDecoded && channel != null && inputStream != null) {
try {
- if (ConfigurationUtils.getSystemConfiguration(channel.getUrl().getScopeModel()).getBoolean(SERIALIZATION_SECURITY_CHECK_KEY, true)) {
- Object serializationType_obj = invocation.get(SERIALIZATION_ID_KEY);
- if (serializationType_obj != null) {
- if ((byte) serializationType_obj != serializationType) {
- throw new IOException("Unexpected serialization id:" + serializationType + " received from network, please check if the peer send the right id.");
+ if (invocation != null) {
- if (ConfigurationUtils.getSystemConfiguration().getBoolean(SERIALIZATION_SECURITY_CHECK_KEY, true)) {
++ if (ConfigurationUtils.getSystemConfiguration(channel.getUrl().getScopeModel()).getBoolean(SERIALIZATION_SECURITY_CHECK_KEY, true)) {
+ Object serializationTypeObj = invocation.get(SERIALIZATION_ID_KEY);
+ if (serializationTypeObj != null) {
+ if ((byte) serializationTypeObj != serializationType) {
+ throw new IOException("Unexpected serialization id:" + serializationType + " received from network, please check if the peer send the right id.");
+ }
}
}
}
++
decode(channel, inputStream);
} catch (Throwable e) {
if (log.isWarnEnabled()) {
[dubbo] 04/04: Add Scope Model check
Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.0-multi-instances
in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit 185a1d182cc8bb58bc15400de4ed250edbb1fd00
Author: Albumen Kevin <jh...@gmail.com>
AuthorDate: Wed Sep 1 01:05:15 2021 +0800
Add Scope Model check
---
.../src/main/java/org/apache/dubbo/config/ServiceConfig.java | 2 +-
.../java/org/apache/dubbo/metadata/ServiceNameMapping.java | 6 +++++-
.../dubbo/registry/client/migration/model/MigrationRule.java | 10 +++++-----
3 files changed, 11 insertions(+), 7 deletions(-)
diff --git 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
index ec49581..d3f9e7d 100644
--- 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
@@ -253,7 +253,7 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
List<URL> exportedURLs = this.getExportedUrls();
exportedURLs.forEach(url -> {
if (url.getParameters().containsKey(SERVICE_NAME_MAPPING_KEY)) {
- ServiceNameMapping serviceNameMapping = ServiceNameMapping.getDefaultExtension();
+ ServiceNameMapping serviceNameMapping = ServiceNameMapping.getDefaultExtension(getScopeModel());
try {
boolean succeeded = serviceNameMapping.map(url);
if (succeeded) {
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/ServiceNameMapping.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/ServiceNameMapping.java
index fe5a933..96dca1a 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/ServiceNameMapping.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/ServiceNameMapping.java
@@ -56,7 +56,11 @@ public interface ServiceNameMapping {
}
static ServiceNameMapping getDefaultExtension(ScopeModel scopeModel) {
- return scopeModel.getDefaultExtension(ServiceNameMapping.class);
+ if (scopeModel != null) {
+ return scopeModel.getDefaultExtension(ServiceNameMapping.class);
+ } else {
+ return getExtensionLoader(ServiceNameMapping.class).getDefaultExtension();
+ }
}
static String buildMappingKey(URL url) {
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/model/MigrationRule.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/model/MigrationRule.java
index 247f159..27a51fc 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/model/MigrationRule.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/model/MigrationRule.java
@@ -151,7 +151,7 @@ public class MigrationRule {
}
if (applications != null) {
- ServiceNameMapping serviceNameMapping = ServiceNameMapping.getDefaultExtension();
+ ServiceNameMapping serviceNameMapping = ServiceNameMapping.getDefaultExtension(consumerURL.getScopeModel());
Set<String> services = serviceNameMapping.getServices(consumerURL);
if (CollectionUtils.isNotEmpty(services)) {
for (String service : services) {
@@ -192,7 +192,7 @@ public class MigrationRule {
}
if (applications != null) {
- ServiceNameMapping serviceNameMapping = ServiceNameMapping.getDefaultExtension();
+ ServiceNameMapping serviceNameMapping = ServiceNameMapping.getDefaultExtension(consumerURL.getScopeModel());
Set<String> services = serviceNameMapping.getServices(consumerURL);
if (CollectionUtils.isNotEmpty(services)) {
for (String service : services) {
@@ -232,7 +232,7 @@ public class MigrationRule {
}
if (applications != null) {
- ServiceNameMapping serviceNameMapping = ServiceNameMapping.getDefaultExtension();
+ ServiceNameMapping serviceNameMapping = ServiceNameMapping.getDefaultExtension(consumerURL.getScopeModel());
Set<String> services = serviceNameMapping.getServices(consumerURL);
if (CollectionUtils.isNotEmpty(services)) {
for (String service : services) {
@@ -268,7 +268,7 @@ public class MigrationRule {
}
if (applications != null) {
- ServiceNameMapping serviceNameMapping = ServiceNameMapping.getDefaultExtension();
+ ServiceNameMapping serviceNameMapping = ServiceNameMapping.getDefaultExtension(consumerURL.getScopeModel());
Set<String> services = serviceNameMapping.getServices(consumerURL);
if (CollectionUtils.isNotEmpty(services)) {
for (String service : services) {
@@ -308,7 +308,7 @@ public class MigrationRule {
}
if (applications != null) {
- ServiceNameMapping serviceNameMapping = ServiceNameMapping.getDefaultExtension();
+ ServiceNameMapping serviceNameMapping = ServiceNameMapping.getDefaultExtension(consumerURL.getScopeModel());
Set<String> services = serviceNameMapping.getServices(consumerURL);
if (CollectionUtils.isNotEmpty(services)) {
for (String service : services) {
[dubbo] 03/04: Fix ut
Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.0-multi-instances
in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit 99e238ad0cd58cb0acaa94aa532d6bc83b1dd1fb
Author: Albumen Kevin <jh...@gmail.com>
AuthorDate: Wed Sep 1 01:00:35 2021 +0800
Fix ut
---
.../dubbo/config/AbstractInterfaceConfig.java | 29 +++
.../org/apache/dubbo/config/ApplicationConfig.java | 10 +-
.../apache/dubbo/config/ReferenceConfigBase.java | 9 +
.../org/apache/dubbo/config/ServiceConfigBase.java | 9 +
.../apache/dubbo/rpc/model/ApplicationModel.java | 4 +
dubbo-config/dubbo-config-api/pom.xml | 5 +
.../org/apache/dubbo/config/ReferenceConfig.java | 1 -
.../dubbo/config/bootstrap/DubboBootstrap.java | 2 +-
.../apache/dubbo/config/ReferenceConfigTest.java | 206 +++++++--------------
.../bootstrap/DubboBootstrapMultiInstanceTest.java | 20 +-
.../dubbo/config/bootstrap/DubboBootstrapTest.java | 3 +-
...egistryCenterExportProviderIntegrationTest.java | 10 +-
...egistryCenterExportProviderIntegrationTest.java | 10 +-
.../spring/issues/issue7003/Issue7003Test.java | 2 +-
.../consumer/PropertyConfigurerTest.java | 2 +-
.../consumer2/PropertySourcesConfigurerTest.java | 2 +-
.../consumer3/PropertySourcesInJavaConfigTest.java | 7 +-
.../javaconfig/JavaConfigReferenceBeanTest.java | 3 -
.../apache/dubbo/metadata/ServiceNameMapping.java | 5 +
.../registry/client/DefaultServiceInstance.java | 1 -
.../registry/client/ServiceDiscoveryRegistry.java | 2 +-
.../ServiceInstanceMetadataCustomizer.java | 2 -
.../registry/integration/RegistryProtocol.java | 10 +-
.../registry/support/AbstractRegistryFactory.java | 2 +-
.../support/CacheableFailbackRegistry.java | 3 +
.../client/DefaultServiceInstanceTest.java | 2 +-
.../registry/client/InstanceAddressURLTest.java | 3 +-
.../client/ServiceDiscoveryRegistryTest.java | 3 +-
.../metadata/MetadataServiceNameMappingTest.java | 4 +-
.../ProtocolPortsMetadataCustomizerTest.java | 4 +-
.../ServiceInstanceMetadataCustomizerTest.java | 4 +-
.../client/migration/model/MigrationRuleTest.java | 42 +++--
.../zookeeper/util/CuratorFrameworkUtils.java | 2 +-
33 files changed, 213 insertions(+), 210 deletions(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
index 3607df4..6acdfa7 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
@@ -28,6 +28,7 @@ import org.apache.dubbo.common.utils.ConfigUtils;
import org.apache.dubbo.common.utils.ReflectUtils;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.config.support.Parameter;
+import org.apache.dubbo.rpc.model.ScopeModel;
import org.apache.dubbo.rpc.model.ServiceMetadata;
import java.lang.reflect.Method;
@@ -196,6 +197,34 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
return urls;
}
+ @Override
+ public void setScopeModel(ScopeModel scopeModel) {
+ super.setScopeModel(scopeModel);
+// ApplicationModel applicationModel = ScopeModelUtil.getApplicationModel(scopeModel);
+// if (this.configCenter != null && this.configCenter.getScopeModel() != applicationModel) {
+// this.configCenter.setScopeModel(applicationModel);
+// }
+// if (this.metadataReportConfig != null && this.metadataReportConfig.getScopeModel() != applicationModel) {
+// this.metadataReportConfig.setScopeModel(applicationModel);
+// }
+// if (this.metrics != null && this.metrics.getScopeModel() != applicationModel) {
+// this.metrics.setScopeModel(applicationModel);
+// }
+// if (this.monitor != null && this.monitor.getScopeModel() != applicationModel) {
+// this.monitor.setScopeModel(applicationModel);
+// }
+// if (this.metadataReportConfig != null && this.metadataReportConfig.getScopeModel() != applicationModel) {
+// this.metadataReportConfig.setScopeModel(applicationModel);
+// }
+// if (CollectionUtils.isNotEmpty(this.registries)) {
+// this.registries.forEach(registryConfig -> {
+// if (registryConfig.getScopeModel() != applicationModel) {
+// registryConfig.setScopeModel(applicationModel);
+// }
+// });
+// }
+ }
+
/**
* Check whether the registry config is exists, and then conversion it to {@link RegistryConfig}
*/
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/ApplicationConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/ApplicationConfig.java
index c5aebc6..d990ddb 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/ApplicationConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ApplicationConfig.java
@@ -33,17 +33,17 @@ import java.util.Map;
import java.util.Set;
import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_PROTOCOL_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_VERSION_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;
import static org.apache.dubbo.common.constants.CommonConstants.DUMP_DIRECTORY;
import static org.apache.dubbo.common.constants.CommonConstants.HOST_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.LIVENESS_PROBE_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.METADATA_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.REGISTRY_LOCAL_FILE_CACHE_ENABLED;
-import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_VERSION_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_PROTOCOL_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.METADATA_SERVICE_PORT_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.LIVENESS_PROBE_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.READINESS_PROBE_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.REGISTRY_LOCAL_FILE_CACHE_ENABLED;
+import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.STARTUP_PROBE;
import static org.apache.dubbo.common.constants.QosConstants.ACCEPT_FOREIGN_IP;
import static org.apache.dubbo.common.constants.QosConstants.QOS_ENABLE;
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java b/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java
index 09abf83..525ccbc 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java
@@ -22,6 +22,7 @@ import org.apache.dubbo.common.utils.RegexProperties;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.config.annotation.Reference;
import org.apache.dubbo.config.support.Parameter;
+import org.apache.dubbo.rpc.model.ScopeModel;
import org.apache.dubbo.rpc.model.ServiceMetadata;
import org.apache.dubbo.rpc.service.GenericService;
import org.apache.dubbo.rpc.support.ProtocolUtils;
@@ -200,6 +201,14 @@ public abstract class ReferenceConfigBase<T> extends AbstractReferenceConfig {
}
@Override
+ public void setScopeModel(ScopeModel scopeModel) {
+ super.setScopeModel(scopeModel);
+ if (this.consumer != null && this.consumer.getScopeModel() != scopeModel) {
+ this.consumer.setScopeModel(scopeModel);
+ }
+ }
+
+ @Override
public String getInterface() {
return interfaceName;
}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java b/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java
index 8e99615..6d61914 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java
@@ -21,6 +21,7 @@ import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.config.annotation.Service;
import org.apache.dubbo.config.support.Parameter;
+import org.apache.dubbo.rpc.model.ScopeModel;
import org.apache.dubbo.rpc.model.ServiceMetadata;
import org.apache.dubbo.rpc.service.GenericService;
import org.apache.dubbo.rpc.support.ProtocolUtils;
@@ -104,6 +105,14 @@ public abstract class ServiceConfigBase<T> extends AbstractServiceConfig {
return protocols;
}
+ @Override
+ public void setScopeModel(ScopeModel scopeModel) {
+ super.setScopeModel(scopeModel);
+ if (this.provider != null && this.provider.getScopeModel() != scopeModel) {
+ this.provider.setScopeModel(scopeModel);
+ }
+ }
+
@Deprecated
private static List<ProviderConfig> convertProtocolToProvider(List<ProtocolConfig> protocols) {
if (CollectionUtils.isEmpty(protocols)) {
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ApplicationModel.java b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ApplicationModel.java
index da9591e..cd814ea 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ApplicationModel.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ApplicationModel.java
@@ -101,6 +101,10 @@ public class ApplicationModel extends ScopeModel {
// TODO destroy application resources
}
+ public boolean isInit() {
+ return initFlag.get();
+ }
+
public FrameworkModel getFrameworkModel() {
return frameworkModel;
}
diff --git a/dubbo-config/dubbo-config-api/pom.xml b/dubbo-config/dubbo-config-api/pom.xml
index ad4220b..b8ea09d 100644
--- a/dubbo-config/dubbo-config-api/pom.xml
+++ b/dubbo-config/dubbo-config-api/pom.xml
@@ -52,6 +52,11 @@
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-rpc-api</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-rpc-injvm</artifactId>
<version>${project.parent.version}</version>
</dependency>
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
index 2f2e4cc..fa022a0 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
@@ -44,7 +44,6 @@ import org.apache.dubbo.rpc.model.AsyncMethodInfo;
import org.apache.dubbo.rpc.model.ConsumerModel;
import org.apache.dubbo.rpc.model.ServiceDescriptor;
import org.apache.dubbo.rpc.model.ServiceRepository;
-import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.protocol.injvm.InjvmProtocol;
import org.apache.dubbo.rpc.service.GenericService;
import org.apache.dubbo.rpc.support.ProtocolUtils;
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
index ec51a07..47b8029 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
@@ -72,6 +72,7 @@ import org.apache.dubbo.registry.client.DefaultServiceInstance;
import org.apache.dubbo.registry.client.ServiceInstance;
import org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils;
import org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService;
+import org.apache.dubbo.registry.client.metadata.store.RemoteMetadataServiceImpl;
import org.apache.dubbo.registry.support.AbstractRegistryFactory;
import org.apache.dubbo.rpc.Protocol;
import org.apache.dubbo.rpc.model.ApplicationModel;
@@ -114,7 +115,6 @@ import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;
import static org.apache.dubbo.metadata.MetadataConstants.DEFAULT_METADATA_PUBLISH_DELAY;
import static org.apache.dubbo.metadata.MetadataConstants.METADATA_PUBLISH_DELAY_KEY;
import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.calInstanceRevision;
-import static org.apache.dubbo.metadata.WritableMetadataService.getDefaultExtension;
import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.setMetadataStorageType;
import static org.apache.dubbo.registry.support.AbstractRegistryFactory.getServiceDiscoveries;
import static org.apache.dubbo.remoting.Constants.CLIENT_KEY;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
index 84a9807..f8214ef 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
@@ -18,9 +18,6 @@ package org.apache.dubbo.config;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.Version;
-import org.apache.dubbo.common.config.CompositeConfiguration;
-import org.apache.dubbo.common.config.Configuration;
-import org.apache.dubbo.common.config.Environment;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.utils.ConfigUtils;
import org.apache.dubbo.common.utils.NetUtils;
@@ -30,87 +27,76 @@ import org.apache.dubbo.config.annotation.Method;
import org.apache.dubbo.config.annotation.Reference;
import org.apache.dubbo.config.api.DemoService;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
-import org.apache.dubbo.config.context.ConfigManager;
import org.apache.dubbo.config.provider.impl.DemoServiceImpl;
-
-import org.apache.dubbo.metadata.report.MetadataReport;
-import org.apache.dubbo.metadata.report.MetadataReportInstance;
import org.apache.dubbo.rpc.Exporter;
import org.apache.dubbo.rpc.ProxyFactory;
import org.apache.dubbo.rpc.listener.ListenerInvokerWrapper;
import org.apache.dubbo.rpc.model.ApplicationModel;
-
-import org.apache.curator.test.TestingServer;
-import org.apache.dubbo.rpc.model.ConsumerModel;
+import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.model.ServiceMetadata;
-import org.apache.dubbo.rpc.model.ServiceRepository;
import org.apache.dubbo.rpc.protocol.injvm.InjvmInvoker;
import org.apache.dubbo.rpc.protocol.injvm.InjvmProtocol;
+
+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.Disabled;
import org.junit.jupiter.api.Test;
-import org.mockito.MockedStatic;
import org.mockito.Mockito;
import java.io.IOException;
import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.HashMap;
-import java.util.Collections;
-import java.util.Optional;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
-
-import static org.apache.dubbo.common.constants.CommonConstants.PID_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_VERSION_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.BROADCAST_CLUSTER;
import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE;
-import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;
-import static org.apache.dubbo.common.constants.CommonConstants.METADATA_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.RELEASE_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.TIMESTAMP_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.METRICS_PROTOCOL;
-import static org.apache.dubbo.common.constants.CommonConstants.METRICS_PORT;
-import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_VERSION_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.DUMP_DIRECTORY;
-import static org.apache.dubbo.common.constants.CommonConstants.REGISTRY_LOCAL_FILE_CACHE_ENABLED;
-import static org.apache.dubbo.common.constants.CommonConstants.METADATA_SERVICE_PORT_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.LIVENESS_PROBE_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.METADATA_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.METADATA_SERVICE_PORT_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.METHODS_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.METRICS_PORT;
+import static org.apache.dubbo.common.constants.CommonConstants.METRICS_PROTOCOL;
+import static org.apache.dubbo.common.constants.CommonConstants.PID_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.READINESS_PROBE_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.STARTUP_PROBE;
-import static org.apache.dubbo.common.constants.CommonConstants.URL_MERGE_PROCESSOR_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.REFER_THREAD_NUM_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.REFER_BACKGROUND_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.REFER_ASYNC_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.REFER_BACKGROUND_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.REFER_THREAD_NUM_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.REGISTRY_LOCAL_FILE_CACHE_ENABLED;
+import static org.apache.dubbo.common.constants.CommonConstants.RELEASE_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.REVISION_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.METHODS_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.STARTUP_PROBE;
+import static org.apache.dubbo.common.constants.CommonConstants.TIMESTAMP_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.URL_MERGE_PROCESSOR_KEY;
+import static org.apache.dubbo.common.constants.QosConstants.ACCEPT_FOREIGN_IP;
import static org.apache.dubbo.common.constants.QosConstants.QOS_ENABLE;
import static org.apache.dubbo.common.constants.QosConstants.QOS_HOST;
import static org.apache.dubbo.common.constants.QosConstants.QOS_PORT;
-import static org.apache.dubbo.common.constants.QosConstants.ACCEPT_FOREIGN_IP;
import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_PUBLISH_INSTANCE_KEY;
import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_PUBLISH_INTERFACE_KEY;
-import static org.apache.dubbo.registry.Constants.ENABLE_CONFIGURATION_LISTEN;
import static org.apache.dubbo.registry.Constants.REGISTER_IP_KEY;
-import static org.apache.dubbo.rpc.Constants.SCOPE_REMOTE;
-import static org.apache.dubbo.rpc.Constants.LOCAL_PROTOCOL;
import static org.apache.dubbo.rpc.Constants.DEFAULT_STUB_EVENT;
import static org.apache.dubbo.rpc.Constants.LOCAL_KEY;
+import static org.apache.dubbo.rpc.Constants.LOCAL_PROTOCOL;
import static org.apache.dubbo.rpc.Constants.SCOPE_KEY;
import static org.apache.dubbo.rpc.Constants.SCOPE_LOCAL;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import static org.apache.dubbo.rpc.Constants.SCOPE_REMOTE;
public class ReferenceConfigTest {
private TestingServer zkServer;
@@ -144,24 +130,6 @@ public class ReferenceConfigTest {
@Test
public void testAppendConfig() {
- ReferenceConfig<DemoService> referenceConfig = new ReferenceConfig<>();
- referenceConfig.setClient("netty");
- referenceConfig.setGeneric(Boolean.FALSE.toString());
- referenceConfig.setProtocol("dubbo");
- referenceConfig.setInit(true);
- referenceConfig.setLazy(false);
- referenceConfig.setInjvm(false);
- referenceConfig.setReconnect("reconnect");
- referenceConfig.setSticky(false);
- referenceConfig.setStub(DEFAULT_STUB_EVENT);
- referenceConfig.setRouter("default");
- referenceConfig.setReferAsync(true);
-
- DubboBootstrap.getInstance()
- .application("application1")
- .initialize();
- referenceConfig.setBootstrap(DubboBootstrap.getInstance());
-
ApplicationConfig applicationConfig = new ApplicationConfig();
applicationConfig.setName("application1");
applicationConfig.setVersion("v1");
@@ -193,6 +161,19 @@ public class ReferenceConfigTest {
applicationConfig.setReadinessProbe("readinessProb");
applicationConfig.setStartupProbe("startupProbe");
+ ReferenceConfig<DemoService> referenceConfig = new ReferenceConfig<>();
+ referenceConfig.setClient("netty");
+ referenceConfig.setGeneric(Boolean.FALSE.toString());
+ referenceConfig.setProtocol("dubbo");
+ referenceConfig.setInit(true);
+ referenceConfig.setLazy(false);
+ referenceConfig.setInjvm(false);
+ referenceConfig.setReconnect("reconnect");
+ referenceConfig.setSticky(false);
+ referenceConfig.setStub(DEFAULT_STUB_EVENT);
+ referenceConfig.setRouter("default");
+ referenceConfig.setReferAsync(true);
+
MonitorConfig monitorConfig = new MonitorConfig();
applicationConfig.setMonitor(monitorConfig);
@@ -220,7 +201,7 @@ public class ReferenceConfigTest {
referenceConfig.setConsumer(consumerConfig);
MethodConfig methodConfig = new MethodConfig();
- methodConfig.setName("method1");
+ methodConfig.setName("sayName");
methodConfig.setStat(1);
methodConfig.setRetries(0);
methodConfig.setExecutes(10);
@@ -231,41 +212,8 @@ public class ReferenceConfigTest {
methodConfig.setServiceId(DemoService.class.getName());
methodConfig.setParentPrefix("demo");
-
referenceConfig.setMethods(Collections.singletonList(methodConfig));
- ConfigManager configManager = mock(ConfigManager.class);
- Environment environment = mock(Environment.class);
- CompositeConfiguration compositeConfiguration = mock(CompositeConfiguration.class);
- Configuration dynamicGlobalConfiguration = mock(Configuration.class);
- ServiceRepository serviceRepository = mock(ServiceRepository.class);
- ConsumerModel consumerModel = mock(ConsumerModel.class);
-
- when(configManager.getApplicationOrElseThrow()).thenReturn(applicationConfig);
- when(configManager.getMetrics()).thenReturn(Optional.of(metricsConfig));
- when(configManager.getModule()).thenReturn(Optional.of(moduleConfig));
-
- MockedStatic<ApplicationModel> applicationModelMockedStatic = Mockito.mockStatic(ApplicationModel.class);
- applicationModelMockedStatic.when(ApplicationModel::getConfigManager).thenReturn(configManager);
- applicationModelMockedStatic.when(ApplicationModel::getEnvironment).thenReturn(environment);
- applicationModelMockedStatic.when(ApplicationModel::getServiceRepository).thenReturn(serviceRepository);
- when(environment.getConfiguration()).thenReturn(compositeConfiguration);
- when(environment.getDynamicGlobalConfiguration()).thenReturn(dynamicGlobalConfiguration);
- when(compositeConfiguration.convert(Boolean.class, ENABLE_CONFIGURATION_LISTEN, true))
- .thenReturn(true);
-
- MockedStatic<MetadataReportInstance> metadataReportInstanceMockedStatic =
- Mockito.mockStatic(MetadataReportInstance.class);
-
- MetadataReport metadataReport = mock(MetadataReport.class);
- metadataReportInstanceMockedStatic.when(() -> MetadataReportInstance.getMetadataReport("default"))
- .thenReturn(metadataReport);
-
-
- when(serviceRepository.lookupReferredService("org.apache.dubbo.config.api.DemoService"))
- .thenReturn(consumerModel);
-
- referenceConfig.refreshed.set(true);
referenceConfig.setInterface(DemoService.class);
referenceConfig.getInterfaceClass();
referenceConfig.setCheck(false);
@@ -277,6 +225,14 @@ public class ReferenceConfigTest {
referenceConfig.setRegistry(registry);
+ DubboBootstrap dubboBootstrap = DubboBootstrap.newInstance(FrameworkModel.defaultModel());
+ dubboBootstrap.application(applicationConfig)
+ .reference(referenceConfig)
+ .registry(registry)
+ .metrics(metricsConfig)
+ .module(moduleConfig)
+ .initialize();
+
referenceConfig.init();
ServiceMetadata serviceMetadata = referenceConfig.getServiceMetadata();
@@ -400,20 +356,20 @@ public class ReferenceConfigTest {
// verify additional method config
Assertions.assertFalse(serviceMetadata.getAttachments().containsKey("name"));
Assertions.assertEquals(methodConfig.getStat().toString(),
- serviceMetadata.getAttachments().get("method1.stat"));
+ serviceMetadata.getAttachments().get("sayName.stat"));
Assertions.assertEquals(methodConfig.getRetries().toString(),
- serviceMetadata.getAttachments().get("method1.retries"));
- Assertions.assertFalse(serviceMetadata.getAttachments().containsKey("method1.reliable"));
+ serviceMetadata.getAttachments().get("sayName.retries"));
+ Assertions.assertFalse(serviceMetadata.getAttachments().containsKey("sayName.reliable"));
Assertions.assertEquals(methodConfig.getExecutes().toString(),
- serviceMetadata.getAttachments().get("method1.executes"));
+ serviceMetadata.getAttachments().get("sayName.executes"));
Assertions.assertEquals(methodConfig.getDeprecated().toString(),
- serviceMetadata.getAttachments().get("method1.deprecated"));
- Assertions.assertFalse(serviceMetadata.getAttachments().containsKey("method1.stick"));
+ serviceMetadata.getAttachments().get("sayName.deprecated"));
+ Assertions.assertFalse(serviceMetadata.getAttachments().containsKey("sayName.stick"));
Assertions.assertEquals(methodConfig.isReturn().toString(),
- serviceMetadata.getAttachments().get("method1.return"));
- Assertions.assertFalse(serviceMetadata.getAttachments().containsKey("method1.service"));
- Assertions.assertFalse(serviceMetadata.getAttachments().containsKey("method1.service.id"));
- Assertions.assertFalse(serviceMetadata.getAttachments().containsKey("method1.parent.prefix"));
+ serviceMetadata.getAttachments().get("sayName.return"));
+ Assertions.assertFalse(serviceMetadata.getAttachments().containsKey("sayName.service"));
+ Assertions.assertFalse(serviceMetadata.getAttachments().containsKey("sayName.service.id"));
+ Assertions.assertFalse(serviceMetadata.getAttachments().containsKey("sayName.parent.prefix"));
// verify additional revision and methods parameter
Assertions.assertEquals(Version.getVersion(referenceConfig.getInterfaceClass(), referenceConfig.getVersion()),
@@ -422,8 +378,7 @@ public class ReferenceConfigTest {
Assertions.assertEquals(DemoService.class.getMethods().length,
StringUtils.split((String) serviceMetadata.getAttachments().get(METHODS_KEY), ',').length);
- applicationModelMockedStatic.closeOnDemand();
- metadataReportInstanceMockedStatic.closeOnDemand();
+ dubboBootstrap.stop();
}
@Test
@@ -494,11 +449,6 @@ public class ReferenceConfigTest {
ReferenceConfig<DemoService> referenceConfig = new ReferenceConfig<>();
referenceConfig.setScope(LOCAL_KEY);
- DubboBootstrap.getInstance()
- .application("application1")
- .initialize();
- referenceConfig.setBootstrap(DubboBootstrap.getInstance());
-
ApplicationConfig applicationConfig = new ApplicationConfig();
applicationConfig.setName("application1");
Map<String, String> parameters = new HashMap<>();
@@ -506,40 +456,15 @@ public class ReferenceConfigTest {
parameters.put("key2", "value2");
applicationConfig.setParameters(parameters);
- ConfigManager configManager = mock(ConfigManager.class);
- Environment environment = mock(Environment.class);
- CompositeConfiguration compositeConfiguration = mock(CompositeConfiguration.class);
- Configuration dynamicGlobalConfiguration = mock(Configuration.class);
- ServiceRepository serviceRepository = mock(ServiceRepository.class);
- ConsumerModel consumerModel = mock(ConsumerModel.class);
-
- when(configManager.getApplicationOrElseThrow()).thenReturn(applicationConfig);
-
- MockedStatic<ApplicationModel> applicationModelMockedStatic = Mockito.mockStatic(ApplicationModel.class);
- applicationModelMockedStatic.when(ApplicationModel::getConfigManager).thenReturn(configManager);
- applicationModelMockedStatic.when(ApplicationModel::getEnvironment).thenReturn(environment);
- applicationModelMockedStatic.when(ApplicationModel::getServiceRepository).thenReturn(serviceRepository);
- when(environment.getConfiguration()).thenReturn(compositeConfiguration);
- when(environment.getDynamicGlobalConfiguration()).thenReturn(dynamicGlobalConfiguration);
- when(compositeConfiguration.convert(Boolean.class, ENABLE_CONFIGURATION_LISTEN, true))
- .thenReturn(true);
-
- MockedStatic<MetadataReportInstance> metadataReportInstanceMockedStatic =
- Mockito.mockStatic(MetadataReportInstance.class);
-
- MetadataReport metadataReport = mock(MetadataReport.class);
- metadataReportInstanceMockedStatic.when(() -> MetadataReportInstance.getMetadataReport("default"))
- .thenReturn(metadataReport);
-
-
- when(serviceRepository.lookupReferredService("org.apache.dubbo.config.api.DemoService"))
- .thenReturn(consumerModel);
-
- referenceConfig.refreshed.set(true);
referenceConfig.setInterface(DemoService.class);
referenceConfig.getInterfaceClass();
referenceConfig.setCheck(false);
+ DubboBootstrap dubboBootstrap = DubboBootstrap.newInstance(FrameworkModel.defaultModel());
+ dubboBootstrap.application(applicationConfig)
+ .reference(referenceConfig)
+ .initialize();
+
referenceConfig.init();
Assertions.assertTrue(referenceConfig.getInvoker() instanceof ListenerInvokerWrapper);
Assertions.assertTrue(((ListenerInvokerWrapper<?>) referenceConfig.getInvoker()).getInvoker() instanceof InjvmInvoker);
@@ -548,8 +473,7 @@ public class ReferenceConfigTest {
Assertions.assertEquals("value1", url.getParameter("key1"));
Assertions.assertEquals("value2", url.getParameter("key2"));
- applicationModelMockedStatic.closeOnDemand();
- metadataReportInstanceMockedStatic.closeOnDemand();
+ dubboBootstrap.stop();
}
@Test
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapMultiInstanceTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapMultiInstanceTest.java
index e7fb4fe..19fe85f 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapMultiInstanceTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapMultiInstanceTest.java
@@ -20,11 +20,13 @@ import org.apache.dubbo.common.utils.NetUtils;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.ReferenceConfig;
+import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.ServiceConfig;
import org.apache.dubbo.config.SysProps;
import org.apache.dubbo.config.api.DemoService;
import org.apache.dubbo.config.provider.impl.DemoServiceImpl;
-import org.apache.dubbo.registrycenter.DefaultSingleRegistryCenter;
+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;
@@ -36,12 +38,20 @@ import org.junit.jupiter.api.Test;
public class DubboBootstrapMultiInstanceTest {
- private static DefaultSingleRegistryCenter registryCenter;
+ private static ZookeeperSingleRegistryCenter registryCenter;
+
+ private static RegistryConfig registryConfig;
@BeforeAll
public static void setup() {
- registryCenter = new DefaultSingleRegistryCenter(NetUtils.getAvailablePort());
+ 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()));
+
}
@AfterAll
@@ -126,7 +136,7 @@ public class DubboBootstrapMultiInstanceTest {
if (!dubboBootstrap.getConfigManager().getApplication().isPresent()) {
dubboBootstrap.application("consumer-app");
}
- dubboBootstrap.registry(registryCenter.getRegistryConfig())
+ dubboBootstrap.registry(registryConfig)
.reference(referenceConfig);
return dubboBootstrap;
}
@@ -150,7 +160,7 @@ public class DubboBootstrapMultiInstanceTest {
if (!dubboBootstrap.getConfigManager().getApplication().isPresent()) {
dubboBootstrap.application("provider-app");
}
- dubboBootstrap.registry(registryCenter.getRegistryConfig())
+ dubboBootstrap.registry(registryConfig)
.protocol(protocol1)
.service(serviceConfig);
return dubboBootstrap;
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 f873f41..68c92f3 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
@@ -37,7 +37,6 @@ import org.apache.dubbo.metadata.MetadataService;
import org.apache.dubbo.metadata.WritableMetadataService;
import org.apache.dubbo.monitor.MonitorService;
import org.apache.dubbo.registry.RegistryService;
-import org.apache.dubbo.registry.client.metadata.MetadataUtils;
import org.apache.dubbo.rpc.Exporter;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;
@@ -343,7 +342,7 @@ public class DubboBootstrapTest {
serviceConfig.setVersion(MetadataService.VERSION);
assertThat(exporters, hasEntry(is(serviceConfig.getUniqueServiceName() + ":" + availablePort), anything()));
- WritableMetadataService metadataService = MetadataUtils.getLocalMetadataService();
+ WritableMetadataService metadataService = WritableMetadataService.getDefaultExtension(ApplicationModel.defaultModel());
MetadataInfo metadataInfo = metadataService.getDefaultMetadataInfo();
Assertions.assertNotNull(metadataInfo);
if (shouldReport) {
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderIntegrationTest.java
index 9eb749c..322d6da 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderIntegrationTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderIntegrationTest.java
@@ -19,11 +19,11 @@ package org.apache.dubbo.integration.multiple.exportprovider;
import org.apache.dubbo.common.config.configcenter.ConfigItem;
import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.common.extension.ExtensionLoader;
-import org.apache.dubbo.config.RegistryConfig;
-import org.apache.dubbo.config.ServiceConfig;
-import org.apache.dubbo.config.ReferenceConfig;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ProtocolConfig;
+import org.apache.dubbo.config.ReferenceConfig;
+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.integration.IntegrationTest;
@@ -34,6 +34,8 @@ import org.apache.dubbo.registrycenter.RegistryCenter;
import org.apache.dubbo.registrycenter.ZookeeperMultipleRegistryCenter;
import org.apache.dubbo.rpc.ExporterListener;
import org.apache.dubbo.rpc.Filter;
+import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
@@ -218,7 +220,7 @@ public class MultipleRegistryCenterExportProviderIntegrationTest implements Inte
// registryKey: the registryKey is the default cluster, CommonConstants.DEFAULT_KEY
// key: The exported interface's name
// group: the group is "mapping", ServiceNameMapping.DEFAULT_MAPPING_GROUP
- ConfigItem configItem = MetadataReportInstance.getMetadataReport(CommonConstants.DEFAULT_KEY)
+ ConfigItem configItem = ApplicationModel.defaultModel().getBeanFactory().getBean(MetadataReportInstance.class).getMetadataReport(CommonConstants.DEFAULT_KEY)
.getConfigItem(serviceConfig.getInterface()
, ServiceNameMapping.DEFAULT_MAPPING_GROUP);
// Check if the exported service (provider) is registered
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/single/exportprovider/SingleRegistryCenterExportProviderIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/single/exportprovider/SingleRegistryCenterExportProviderIntegrationTest.java
index 05378e7..ec806b9 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/single/exportprovider/SingleRegistryCenterExportProviderIntegrationTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/integration/single/exportprovider/SingleRegistryCenterExportProviderIntegrationTest.java
@@ -19,11 +19,11 @@ package org.apache.dubbo.integration.single.exportprovider;
import org.apache.dubbo.common.config.configcenter.ConfigItem;
import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.common.extension.ExtensionLoader;
-import org.apache.dubbo.config.RegistryConfig;
-import org.apache.dubbo.config.ServiceConfig;
-import org.apache.dubbo.config.ReferenceConfig;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ProtocolConfig;
+import org.apache.dubbo.config.ReferenceConfig;
+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.integration.IntegrationTest;
@@ -34,6 +34,8 @@ import org.apache.dubbo.registrycenter.RegistryCenter;
import org.apache.dubbo.registrycenter.ZookeeperMultipleRegistryCenter;
import org.apache.dubbo.rpc.ExporterListener;
import org.apache.dubbo.rpc.Filter;
+import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
@@ -216,7 +218,7 @@ public class SingleRegistryCenterExportProviderIntegrationTest implements Integr
// registryKey: the registryKey is the default cluster, CommonConstants.DEFAULT_KEY
// key: The exported interface's name
// group: the group is "mapping", ServiceNameMapping.DEFAULT_MAPPING_GROUP
- ConfigItem configItem = MetadataReportInstance.getMetadataReport(CommonConstants.DEFAULT_KEY)
+ ConfigItem configItem = ApplicationModel.defaultModel().getBeanFactory().getBean(MetadataReportInstance.class).getMetadataReport(CommonConstants.DEFAULT_KEY)
.getConfigItem(serviceConfig.getInterface()
, ServiceNameMapping.DEFAULT_MAPPING_GROUP);
// Check if the exported service (provider) is registered
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue7003/Issue7003Test.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue7003/Issue7003Test.java
index e5714d4..75d6b7a 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue7003/Issue7003Test.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue7003/Issue7003Test.java
@@ -22,8 +22,8 @@ import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.spring.ReferenceBean;
import org.apache.dubbo.config.spring.api.HelloService;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
-import org.apache.dubbo.config.spring.registrycenter.ZookeeperSingleRegistryCenter;
import org.apache.dubbo.config.spring.registrycenter.RegistryCenter;
+import org.apache.dubbo.config.spring.registrycenter.ZookeeperSingleRegistryCenter;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.junit.jupiter.api.AfterAll;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer/PropertyConfigurerTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer/PropertyConfigurerTest.java
index 79d9ab5..099f8a7 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer/PropertyConfigurerTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer/PropertyConfigurerTest.java
@@ -20,8 +20,8 @@ import org.apache.dubbo.common.URL;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.spring.api.HelloService;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
-import org.apache.dubbo.config.spring.registrycenter.ZookeeperSingleRegistryCenter;
import org.apache.dubbo.config.spring.registrycenter.RegistryCenter;
+import org.apache.dubbo.config.spring.registrycenter.ZookeeperSingleRegistryCenter;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.junit.jupiter.api.AfterAll;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer2/PropertySourcesConfigurerTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer2/PropertySourcesConfigurerTest.java
index e3939e4..2cb92ff 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer2/PropertySourcesConfigurerTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer2/PropertySourcesConfigurerTest.java
@@ -21,8 +21,8 @@ import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.spring.api.HelloService;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.apache.dubbo.config.spring.propertyconfigurer.consumer.DemoBeanFactoryPostProcessor;
-import org.apache.dubbo.config.spring.registrycenter.ZookeeperSingleRegistryCenter;
import org.apache.dubbo.config.spring.registrycenter.RegistryCenter;
+import org.apache.dubbo.config.spring.registrycenter.ZookeeperSingleRegistryCenter;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.junit.jupiter.api.AfterAll;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer3/PropertySourcesInJavaConfigTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer3/PropertySourcesInJavaConfigTest.java
index be83282..b5b1a2d 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer3/PropertySourcesInJavaConfigTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer3/PropertySourcesInJavaConfigTest.java
@@ -21,11 +21,14 @@ import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.spring.api.HelloService;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.apache.dubbo.config.spring.propertyconfigurer.consumer.DemoBeanFactoryPostProcessor;
-import org.apache.dubbo.config.spring.registrycenter.ZookeeperSingleRegistryCenter;
import org.apache.dubbo.config.spring.registrycenter.RegistryCenter;
+import org.apache.dubbo.config.spring.registrycenter.ZookeeperSingleRegistryCenter;
import org.apache.dubbo.rpc.model.ApplicationModel;
-import org.junit.jupiter.api.*;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/javaconfig/JavaConfigReferenceBeanTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/javaconfig/JavaConfigReferenceBeanTest.java
index 73ca355..cd65bb4 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/javaconfig/JavaConfigReferenceBeanTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/javaconfig/JavaConfigReferenceBeanTest.java
@@ -27,16 +27,13 @@ import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
import org.apache.dubbo.config.spring.impl.HelloServiceImpl;
import org.apache.dubbo.config.spring.reference.ReferenceBeanBuilder;
-import org.apache.dubbo.config.spring.registrycenter.ZooKeeperServer;
import org.apache.dubbo.config.spring.registrycenter.RegistryCenter;
import org.apache.dubbo.config.spring.registrycenter.ZookeeperMultipleRegistryCenter;
import org.apache.dubbo.rpc.service.GenericException;
import org.apache.dubbo.rpc.service.GenericService;
-import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/ServiceNameMapping.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/ServiceNameMapping.java
index 6ecca68..fe5a933 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/ServiceNameMapping.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/ServiceNameMapping.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.metadata;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.SPI;
import org.apache.dubbo.common.utils.StringUtils;
+import org.apache.dubbo.rpc.model.ScopeModel;
import java.util.Arrays;
import java.util.HashSet;
@@ -54,6 +55,10 @@ public interface ServiceNameMapping {
return getExtensionLoader(ServiceNameMapping.class).getDefaultExtension();
}
+ static ServiceNameMapping getDefaultExtension(ScopeModel scopeModel) {
+ return scopeModel.getDefaultExtension(ServiceNameMapping.class);
+ }
+
static String buildMappingKey(URL url) {
return buildGroup(url.getServiceInterface());
}
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/DefaultServiceInstance.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/DefaultServiceInstance.java
index bfdc191..483c862 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/DefaultServiceInstance.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/DefaultServiceInstance.java
@@ -29,7 +29,6 @@ import java.util.Objects;
import java.util.SortedMap;
import java.util.TreeMap;
-import static org.apache.dubbo.common.constants.CommonConstants.REVISION_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.SCOPE_MODEL;
import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.ENDPOINTS;
import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.EXPORTED_SERVICES_REVISION_PROPERTY_NAME;
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java
index 1eaa2dd..996962f 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java
@@ -210,7 +210,7 @@ public class ServiceDiscoveryRegistry implements Registry {
Set<String> subscribedServices = Collections.emptySet();
try {
- ServiceNameMapping serviceNameMapping = ServiceNameMapping.getDefaultExtension();
+ ServiceNameMapping serviceNameMapping = ServiceNameMapping.getDefaultExtension(registryURL.getScopeModel());
subscribedServices = serviceNameMapping.getAndListenServices(registryURL, url, new DefaultMappingListener(url, subscribedServices, listener));
} catch (Exception e) {
logger.warn("Cannot find app mapping for service " + url.getServiceInterface() + ", will not migrate.", e);
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.java
index ea0723c..e238ea7 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.java
@@ -31,7 +31,6 @@ import org.apache.dubbo.rpc.model.ApplicationModel;
import java.util.Collections;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -76,7 +75,6 @@ public class ServiceInstanceMetadataCustomizer implements ServiceInstanceCustomi
}
MetadataInfo.ServiceInfo serviceInfo = metadataInfo.getServices().values().iterator().next();
URL url = serviceInfo.getUrl();
- List<MetadataParamsFilter> paramsFilters = loader.getActivateExtension(url, "params-filter");
Map<String, String> allParams = new HashMap<>(url.getParameters());
// load instance params users want to load.
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
index 25543bc..e687ff7 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
@@ -598,10 +598,12 @@ public class RegistryProtocol implements Protocol, ScopeModelAware {
}
for (ApplicationModel applicationModel : frameworkModel.getApplicationModels()) {
- if (applicationModel.getApplicationEnvironment().getConfiguration().convert(Boolean.class, org.apache.dubbo.registry.Constants.ENABLE_CONFIGURATION_LISTEN, true)) {
- applicationModel.getExtensionLoader(GovernanceRuleRepository.class).getDefaultExtension()
- .removeListener(applicationModel.getApplicationName() + CONFIGURATORS_SUFFIX,
- getProviderConfigurationListener(applicationModel));
+ if (applicationModel.isInit()) {
+ if (applicationModel.getApplicationEnvironment().getConfiguration().convert(Boolean.class, org.apache.dubbo.registry.Constants.ENABLE_CONFIGURATION_LISTEN, true)) {
+ applicationModel.getExtensionLoader(GovernanceRuleRepository.class).getDefaultExtension()
+ .removeListener(applicationModel.getApplicationName() + CONFIGURATORS_SUFFIX,
+ getProviderConfigurationListener(applicationModel));
+ }
}
}
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistryFactory.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistryFactory.java
index 169b51e..89710e1 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistryFactory.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistryFactory.java
@@ -37,9 +37,9 @@ import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors;
+import static org.apache.dubbo.common.constants.CommonConstants.CHECK_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.TIMESTAMP_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.CHECK_KEY;
import static org.apache.dubbo.rpc.cluster.Constants.EXPORT_KEY;
import static org.apache.dubbo.rpc.cluster.Constants.REFER_KEY;
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/CacheableFailbackRegistry.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/CacheableFailbackRegistry.java
index e13d29d..c356cea 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/CacheableFailbackRegistry.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/CacheableFailbackRegistry.java
@@ -32,6 +32,9 @@ import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.common.utils.UrlUtils;
import org.apache.dubbo.registry.NotifyListener;
+import org.apache.dubbo.registry.ProviderFirstParams;
+import org.apache.dubbo.rpc.model.ScopeModel;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
import java.util.ArrayList;
import java.util.Collection;
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/DefaultServiceInstanceTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/DefaultServiceInstanceTest.java
index 13fde8e..8f073b4 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/DefaultServiceInstanceTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/DefaultServiceInstanceTest.java
@@ -94,7 +94,7 @@ public class DefaultServiceInstanceTest {
assertEquals("value", allParams2.get("key"));
// test equals
- DefaultServiceInstance instance2 = new DefaultServiceInstance("A", "127.0.0.1", 20880);
+ DefaultServiceInstance instance2 = new DefaultServiceInstance("A", "127.0.0.1", 20880, ApplicationModel.defaultModel());
instance2.setMetadata(new HashMap<>(instance.getMetadata()));
instance2.getMetadata().put(EXPORTED_SERVICES_REVISION_PROPERTY_NAME, "222");
// assert instances with different revision and extend params are equal
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/InstanceAddressURLTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/InstanceAddressURLTest.java
index 9ce1f03..6b3a0da 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/InstanceAddressURLTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/InstanceAddressURLTest.java
@@ -22,6 +22,7 @@ import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.metadata.MetadataInfo;
import org.apache.dubbo.registry.ProviderFirstParams;
import org.apache.dubbo.rpc.RpcServiceContext;
+import org.apache.dubbo.rpc.model.ApplicationModel;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -64,7 +65,7 @@ public class InstanceAddressURLTest {
"&version=1.0.0&timeout=9000&a.timeout=8888&dubbo.tag=consumer&protocol=dubbo");
private DefaultServiceInstance createInstance() {
- DefaultServiceInstance instance = new DefaultServiceInstance("demo-provider", "127.0.0.1", 8080);
+ DefaultServiceInstance instance = new DefaultServiceInstance("demo-provider", "127.0.0.1", 8080, ApplicationModel.defaultModel());
Map<String, String> metadata = instance.getMetadata();
metadata.put("key1", "value1");
metadata.put("key2", "value2");
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryTest.java
index 2f5e047..31e7b37 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryTest.java
@@ -22,6 +22,7 @@ import org.apache.dubbo.metadata.WritableMetadataService;
import org.apache.dubbo.registry.NotifyListener;
import org.apache.dubbo.registry.client.event.listener.MockServiceInstancesChangedListener;
import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;
+import org.apache.dubbo.rpc.model.ApplicationModel;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
@@ -97,7 +98,7 @@ public class ServiceDiscoveryRegistryTest {
when(serviceDiscovery.createListener(any())).thenReturn(instanceListener);
when(serviceDiscovery.getInstances(any())).thenReturn(Collections.emptyList());
- spiedMetadataService = spy(WritableMetadataService.getDefaultExtension());
+ spiedMetadataService = spy(WritableMetadataService.getDefaultExtension(ApplicationModel.defaultModel()));
serviceDiscoveryRegistry = new ServiceDiscoveryRegistry(registryURL, serviceDiscovery, spiedMetadataService);
}
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/MetadataServiceNameMappingTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/MetadataServiceNameMappingTest.java
index 41b96e9..f710e56 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/MetadataServiceNameMappingTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/MetadataServiceNameMappingTest.java
@@ -71,7 +71,7 @@ public class MetadataServiceNameMappingTest {
try (MockedStatic<MetadataReportInstance> mockedMetadataHolder = Mockito.mockStatic(MetadataReportInstance.class)) {
when(configManager.getMetadataConfigs()).thenReturn(Arrays.asList(new MetadataReportConfig()));
- mockedMetadataHolder.when(() -> MetadataReportInstance.getMetadataReport(any())).thenReturn(metadataReport);
+ mockedMetadataHolder.when(() -> ApplicationModel.defaultModel().getBeanFactory().getBean(MetadataReportInstance.class).getMetadataReport(any())).thenReturn(metadataReport);
when(metadataReport.registerServiceAppMapping(any(), any(), any())).thenReturn(true);
// metadata report directly
@@ -116,7 +116,7 @@ public class MetadataServiceNameMappingTest {
Set<String> set = new HashSet<>();
set.add("app1");
try (MockedStatic<MetadataReportInstance> mockedMetadataHolder = Mockito.mockStatic(MetadataReportInstance.class)) {
- mockedMetadataHolder.when(() -> MetadataReportInstance.getMetadataReport(any())).thenReturn(metadataReport);
+ mockedMetadataHolder.when(() -> ApplicationModel.defaultModel().getBeanFactory().getBean(MetadataReportInstance.class).getMetadataReport(any())).thenReturn(metadataReport);
when(metadataReport.getServiceAppMapping(any(), any())).thenReturn(set);
Set<String> result = mapping.get(url);
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizerTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizerTest.java
index 1346a46..a402b96 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizerTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizerTest.java
@@ -53,7 +53,7 @@ public class ProtocolPortsMetadataCustomizerTest {
private InMemoryWritableMetadataService metadataService;
public static DefaultServiceInstance createInstance() {
- return new DefaultServiceInstance("A", "127.0.0.1", 20880);
+ return new DefaultServiceInstance("A", "127.0.0.1", 20880, ApplicationModel.defaultModel());
}
@BeforeAll
@@ -86,7 +86,7 @@ public class ProtocolPortsMetadataCustomizerTest {
public void test() {
ProtocolPortsMetadataCustomizer customizer = new ProtocolPortsMetadataCustomizer();
try (MockedStatic<WritableMetadataService> mockMetadataService = Mockito.mockStatic(WritableMetadataService.class)) {
- mockMetadataService.when(() -> WritableMetadataService.getDefaultExtension()).thenReturn(metadataService);
+ mockMetadataService.when(() -> WritableMetadataService.getDefaultExtension(ApplicationModel.defaultModel())).thenReturn(metadataService);
customizer.customize(instance);
String endpoints = instance.getMetadata().get(ENDPOINTS);
assertNotNull(endpoints);
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizerTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizerTest.java
index 8094a59..08e7c72 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizerTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizerTest.java
@@ -48,7 +48,7 @@ public class ServiceInstanceMetadataCustomizerTest {
private InMemoryWritableMetadataService metadataService;
public static DefaultServiceInstance createInstance() {
- return new DefaultServiceInstance("A", "127.0.0.1", 20880);
+ return new DefaultServiceInstance("A", "127.0.0.1", 20880, ApplicationModel.defaultModel());
}
@BeforeAll
@@ -81,7 +81,7 @@ public class ServiceInstanceMetadataCustomizerTest {
ServiceInstanceMetadataCustomizer customizer = new ServiceInstanceMetadataCustomizer();
try (MockedStatic<ConfigurationUtils> mockedUtils = Mockito.mockStatic(ConfigurationUtils.class)) {
try (MockedStatic<WritableMetadataService> mockMetadataService = Mockito.mockStatic(WritableMetadataService.class)) {
- mockMetadataService.when(() -> WritableMetadataService.getDefaultExtension()).thenReturn(metadataService);
+ mockMetadataService.when(() -> WritableMetadataService.getDefaultExtension(ApplicationModel.defaultModel())).thenReturn(metadataService);
mockedUtils.when(() -> ConfigurationUtils.getProperty(DUBBO_LABELS)).thenReturn("k1=v1;k2=v2");
// mockedUtils.when(() -> ConfigurationUtils.getProperty(DUBBO_ENV_KEYS)).thenReturn("ENV_KEY1;ENV_KEY1");
// mockedUtils.when(() -> ConfigurationUtils.getProperty(ENV_KEY1)).thenReturn("");
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/model/MigrationRuleTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/model/MigrationRuleTest.java
index c89ebee..2ea3be6 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/model/MigrationRuleTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/model/MigrationRuleTest.java
@@ -18,9 +18,10 @@ package org.apache.dubbo.registry.client.migration.model;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.metadata.ServiceNameMapping;
-
+import org.apache.dubbo.metadata.WritableMetadataService;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.ModuleModel;
+
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentMatchers;
import org.mockito.MockedStatic;
@@ -79,12 +80,12 @@ public class MigrationRuleTest {
assertEquals(60, migrationRule.getDelay());
assertEquals(false, migrationRule.getForce());
- URL url = Mockito.mock(URL.class);
- ModuleModel defaultModule = ApplicationModel.defaultModel().getDefaultModule();
- url.setScopeModel(defaultModule);
- Mockito.when(url.getDisplayServiceKey()).thenReturn("DemoService:1.0.0");
- Mockito.when(url.getParameter(ArgumentMatchers.eq(REGISTRY_CLUSTER_TYPE_KEY), anyString())).thenReturn("default");
- Mockito.when(url.getParameter(ArgumentMatchers.eq(REGISTRY_CLUSTER_TYPE_KEY), anyString())).thenReturn("default");
+ URL url = Mockito.mock(URL.class);
+ ModuleModel defaultModule = ApplicationModel.defaultModel().getDefaultModule();
+ url.setScopeModel(defaultModule);
+ Mockito.when(url.getDisplayServiceKey()).thenReturn("DemoService:1.0.0");
+ Mockito.when(url.getParameter(ArgumentMatchers.eq(REGISTRY_CLUSTER_TYPE_KEY), anyString())).thenReturn("default");
+ Mockito.when(url.getParameter(ArgumentMatchers.eq(REGISTRY_CLUSTER_TYPE_KEY), anyString())).thenReturn("default");
assertEquals(migrationRule.getInterfaces().size(), 2);
@@ -101,19 +102,20 @@ public class MigrationRuleTest {
assertEquals(false, migrationRule.getForce(url));
assertEquals(MigrationStep.FORCE_APPLICATION, migrationRule.getStep(url));
- Mockito.when(url.getDisplayServiceKey()).thenReturn("GreetingService:1.0.1");
- Mockito.when(url.getServiceInterface()).thenReturn("GreetingService");
- WritableMetadataService metadataService = WritableMetadataService.getDefaultExtension(defaultModule);
- metadataService.putCachedMapping(ServiceNameMapping.buildMappingKey(url), Collections.singleton("TestApplication"));
+ Mockito.when(url.getDisplayServiceKey()).thenReturn("GreetingService:1.0.1");
+ Mockito.when(url.getServiceInterface()).thenReturn("GreetingService");
+ WritableMetadataService metadataService = WritableMetadataService.getDefaultExtension(defaultModule);
+ metadataService.putCachedMapping(ServiceNameMapping.buildMappingKey(url), Collections.singleton("TestApplication"));
- Set<String> services = new HashSet<>();
- services.add("TestApplication");
- when(mapping.getServices(any())).thenReturn(services);
- assertEquals(0.3f, migrationRule.getThreshold(url));
- assertEquals(20, migrationRule.getProportion(url));
- assertEquals(10, migrationRule.getDelay(url));
- assertEquals(false, migrationRule.getForce(url));
- assertEquals(MigrationStep.FORCE_INTERFACE, migrationRule.getStep(url));
- metadataService.removeCachedMapping("GreetingService");
+ Set<String> services = new HashSet<>();
+ services.add("TestApplication");
+ when(mapping.getServices(any())).thenReturn(services);
+ assertEquals(0.3f, migrationRule.getThreshold(url));
+ assertEquals(20, migrationRule.getProportion(url));
+ assertEquals(10, migrationRule.getDelay(url));
+ assertEquals(false, migrationRule.getForce(url));
+ assertEquals(MigrationStep.FORCE_INTERFACE, migrationRule.getStep(url));
+ metadataService.removeCachedMapping("GreetingService");
+ }
}
}
diff --git a/dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtils.java b/dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtils.java
index d7fd458..97e471f 100644
--- a/dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtils.java
+++ b/dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtils.java
@@ -16,7 +16,6 @@
*/
package org.apache.dubbo.registry.zookeeper.util;
-import org.apache.curator.framework.imps.CuratorFrameworkState;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.registry.client.DefaultServiceInstance;
import org.apache.dubbo.registry.client.ServiceInstance;
@@ -26,6 +25,7 @@ import org.apache.dubbo.rpc.model.ScopeModelUtil;
import org.apache.curator.RetryPolicy;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
+import org.apache.curator.framework.imps.CuratorFrameworkState;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.curator.x.discovery.ServiceDiscovery;
import org.apache.curator.x.discovery.ServiceDiscoveryBuilder;