You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2021/12/11 10:46:10 UTC
[dubbo] 01/02: fix multip metadata cannot be initialized
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 <ke...@gmail.com>
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);