This is an automated email from the ASF dual-hosted git repository. liujun pushed a commit to branch 3.0-metadata-refactor in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit c32b75fb550ee088e6d7ea630960cb0931c92b5f Author: ken.lj <[email protected]> AuthorDate: Sat Dec 11 18:44:43 2021 +0800 fix multip metadata cannot be initialized --- .../apache/dubbo/config/deploy/DefaultApplicationDeployer.java | 4 +++- .../org/apache/dubbo/metadata/report/MetadataReportInstance.java | 9 ++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java index c535209..4ee9433 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java @@ -278,14 +278,16 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode } MetadataReportInstance metadataReportInstance = applicationModel.getBeanFactory().getBean(MetadataReportInstance.class); + List<MetadataReportConfig> validMetadataReportConfigs = new ArrayList<>(metadataReportConfigs.size()); for (MetadataReportConfig metadataReportConfig : metadataReportConfigs) { ConfigValidationUtils.validateMetadataConfig(metadataReportConfig); if (!metadataReportConfig.isValid()) { logger.info("Ignore invalid metadata-report config: " + metadataReportConfig); continue; } - metadataReportInstance.init(metadataReportConfig); + validMetadataReportConfigs.add(metadataReportConfig); } + metadataReportInstance.init(validMetadataReportConfigs); if (!metadataReportInstance.inited()) { throw new IllegalStateException(String.format("%s MetadataConfigs found, but none of them is valid.", metadataReportConfigs.size())); } diff --git 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 index bbb8d49..be4664d 100644 --- 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 @@ -24,6 +24,7 @@ import org.apache.dubbo.metadata.report.support.NopMetadataReport; import org.apache.dubbo.rpc.model.ApplicationModel; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; @@ -62,7 +63,7 @@ public class MetadataReportInstance implements Disposable { this.nopMetadataReport = new NopMetadataReport(); } - public void init(MetadataReportConfig config) { + public void init(List<MetadataReportConfig> metadataReportConfigs) { if (!init.compareAndSet(false, true)) { return; } @@ -73,6 +74,12 @@ public class MetadataReportInstance implements Disposable { } MetadataReportFactory metadataReportFactory = applicationModel.getExtensionLoader(MetadataReportFactory.class).getAdaptiveExtension(); + for (MetadataReportConfig metadataReportConfig : metadataReportConfigs) { + init(metadataReportConfig, metadataReportFactory); + } + } + + private void init(MetadataReportConfig config, MetadataReportFactory metadataReportFactory) { URL url = config.toUrl(); if (METADATA_REPORT_KEY.equals(url.getProtocol())) { String protocol = url.getParameter(METADATA_REPORT_KEY, DEFAULT_DIRECTORY);
