Skip to content

Commit 994d2b2

Browse files
authored
fix:修复metadata-report多上报时multi_address参数无法全部识别
1 parent 95e1d9f commit 994d2b2

File tree

3 files changed

+32
-7
lines changed

3 files changed

+32
-7
lines changed

dubbo/dubbo-plugins/dubbo-metadatareport-polaris/src/main/java/com/tencent/polaris/dubbo/metadata/report/MultiReportUtil.java

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,23 +40,43 @@ public static Optional<WrapAbstractMetadataReport> buildAnother(ApplicationModel
4040
Map<String, MetadataReportFactory> factoryMap = loader.getSupportedExtensionInstances().stream()
4141
.collect(HashMap::new, (m, v) -> m.put(loader.getExtensionName(v), v), HashMap::putAll);
4242

43-
String multiAddress = url.getParameter("multi_address", String.class);
44-
if (StringUtils.isBlank(multiAddress)) {
43+
44+
Optional<URL> ret = generate(url);
45+
if (!ret.isPresent()) {
4546
return Optional.empty();
4647
}
47-
logger.info(String.format("another metadata-report connect url : %s", multiAddress));
48-
URL copyUrl = URL.valueOf(multiAddress);
48+
URL copyUrl = ret.get();
4949

5050
if (!factoryMap.containsKey(copyUrl.getProtocol())) {
5151
return Optional.empty();
5252
}
5353
MetadataReportFactory factory = factoryMap.get(copyUrl.getProtocol());
5454

55+
Map<String, String> parameters = url.getParameters();
56+
parameters.remove("namespace");
57+
copyUrl.addParameters(parameters);
58+
5559
MetadataReport report = factory.getMetadataReport(copyUrl);
5660
if (report instanceof AbstractMetadataReport) {
5761
return Optional.ofNullable(new WrapAbstractMetadataReport((AbstractMetadataReport) report));
5862
}
5963
return Optional.empty();
6064
}
6165

66+
public static Optional<URL> generate(URL url) {
67+
String multiAddress = url.getParameter("multi_address", String.class);
68+
if (StringUtils.isBlank(multiAddress)) {
69+
return Optional.empty();
70+
}
71+
URL copyUrl = URL.valueOf(multiAddress);
72+
73+
Map<String, String> parameters = url.getParameters();
74+
parameters.remove("namespace");
75+
parameters.remove("multi_address");
76+
copyUrl = copyUrl.addParameters(parameters);
77+
78+
logger.info(String.format("another metadata-report connect url : %s", copyUrl.toString()));
79+
return Optional.of(copyUrl);
80+
}
81+
6282
}

dubbo/dubbo-plugins/dubbo-metadatareport-polaris/src/test/java/com/tencent/polaris/dubbo/metadata/report/MultiReportUtilTest.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,18 @@
2020
import org.junit.Assert;
2121
import org.junit.Test;
2222

23+
import java.util.Optional;
24+
2325
public class MultiReportUtilTest {
2426

2527
@Test
2628
public void testMultiAddress() {
27-
String testUrl = "polaris://127.0.0.1:8091?namespace=dubbo-multi&multi_address=nacos://127.0.0.1:8848?namespace=xxxxx";
29+
String testUrl = "polaris://127.0.0.1:8091?namespace=dubbo-multi&multi_address=nacos://127.0.0.1:8848?namespace=xxxxx&username=xxx";
2830
URL dubboUrl = URL.valueOf(testUrl);
29-
Assert.assertEquals("nacos://127.0.0.1:8848?namespace=xxxxx", dubboUrl.getParameter("multi_address"));
31+
32+
Optional<URL> ret = MultiReportUtil.generate(dubboUrl);
33+
Assert.assertTrue(ret.isPresent());
34+
Assert.assertEquals("nacos://127.0.0.1:8848?namespace=xxxxx&username=xxx", ret.get().toString());
3035
}
3136

3237
}

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737

3838
<properties>
3939
<!-- Project revision -->
40-
<revision>0.3.0-3.2.7</revision>
40+
<revision>0.3.1-3.2.7</revision>
4141
<timestamp>${maven.build.timestamp}</timestamp>
4242
<maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>
4343
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

0 commit comments

Comments
 (0)