This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0 by this push:
new 3101a5d458 fix metadata service export port (#10055)
3101a5d458 is described below
commit 3101a5d458a4f820a660f0497770d920168c067d
Author: Young Hu <[email protected]>
AuthorDate: Fri Jul 15 09:14:18 2022 +0800
fix metadata service export port (#10055)
---
.../config/metadata/ConfigurableMetadataServiceExporter.java | 11 +++++++++++
.../MetadataServiceURLParamsMetadataCustomizerTest.java | 3 ++-
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ConfigurableMetadataServiceExporter.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ConfigurableMetadataServiceExporter.java
index 568aae63dd..481fdd0564 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ConfigurableMetadataServiceExporter.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ConfigurableMetadataServiceExporter.java
@@ -97,6 +97,10 @@ public class ConfigurableMetadataServiceExporter {
return
applicationModel.getApplicationConfigManager().getApplication().get();
}
+ private ProtocolConfig getProtocolConfig(String protocol) {
+ return
applicationModel.getApplicationConfigManager().getProtocol(protocol).get();
+ }
+
private ProtocolConfig generateMetadataProtocol() {
// protocol always defaults to dubbo if not specified
String specifiedProtocol = getSpecifiedProtocol();
@@ -115,10 +119,17 @@ public class ConfigurableMetadataServiceExporter {
Protocol protocol =
applicationModel.getExtensionLoader(Protocol.class).getExtension(specifiedProtocol);
if (protocol != null && protocol.getServers() != null) {
Iterator<ProtocolServer> it =
protocol.getServers().iterator();
+ // metadata service may export before normal service
export, it.hasNext() will return false.
+ // so need use specified protocol port.
if (it.hasNext()) {
String addr = it.next().getAddress();
String rawPort = addr.substring(addr.indexOf(":") + 1);
protocolConfig.setPort(Integer.parseInt(rawPort));
+ } else {
+ Integer protocolPort =
getProtocolConfig(specifiedProtocol).getPort();
+ if (null != protocolPort && protocolPort != -1) {
+ protocolConfig.setPort(protocolPort);
+ }
}
}
} catch (Exception e) {
diff --git
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/MetadataServiceURLParamsMetadataCustomizerTest.java
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/MetadataServiceURLParamsMetadataCustomizerTest.java
index e3552fe011..76380f276e 100644
---
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/MetadataServiceURLParamsMetadataCustomizerTest.java
+++
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/MetadataServiceURLParamsMetadataCustomizerTest.java
@@ -26,6 +26,7 @@ import org.apache.dubbo.config.api.DemoService;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.provider.impl.DemoServiceImpl;
import org.apache.dubbo.registry.client.DefaultServiceInstance;
+import org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.junit.jupiter.api.AfterEach;
@@ -49,7 +50,7 @@ import static
org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataU
public class MetadataServiceURLParamsMetadataCustomizerTest {
public DefaultServiceInstance instance;
- private URL metadataServiceURL =
URL.valueOf("dubbo://10.225.12.124:20880/org.apache.dubbo.metadata.MetadataService"
+
+ private URL metadataServiceURL =
URL.valueOf("dubbo://10.225.12.124:2002/org.apache.dubbo.metadata.MetadataService"
+
"?application=MetadataServiceURLParamsMetadataCustomizerTest&group=MetadataServiceURLParamsMetadataCustomizerTest"
+
"&interface=org.apache.dubbo.metadata.MetadataService&side=provider×tamp=1637573430740&version=1.0.0");