Skip to content

Commit

Permalink
When using multiple protocols and having port specified, service can …
Browse files Browse the repository at this point in the history
…not be started. (apache#7656)
  • Loading branch information
goodjava committed May 13, 2021
1 parent e6a1253 commit 24400d0
Showing 1 changed file with 20 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
Expand Down Expand Up @@ -332,17 +333,18 @@ private void doExportUrls() {

List<URL> registryURLs = ConfigValidationUtils.loadRegistries(this, true);

int protocolConfigNum = protocols.size();
for (ProtocolConfig protocolConfig : protocols) {
String pathKey = URL.buildKey(getContextPath(protocolConfig)
.map(p -> p + "/" + path)
.orElse(path), group, version);
// In case user specified path, register service one more time to map it to path.
repository.registerService(pathKey, interfaceClass);
doExportUrlsFor1Protocol(protocolConfig, registryURLs);
doExportUrlsFor1Protocol(protocolConfig, registryURLs, protocolConfigNum);
}
}

private void doExportUrlsFor1Protocol(ProtocolConfig protocolConfig, List<URL> registryURLs) {
private void doExportUrlsFor1Protocol(ProtocolConfig protocolConfig, List<URL> registryURLs, int protocolConfigNum) {
String name = protocolConfig.getName();
if (StringUtils.isEmpty(name)) {
name = DUBBO;
Expand Down Expand Up @@ -463,7 +465,7 @@ private void doExportUrlsFor1Protocol(ProtocolConfig protocolConfig, List<URL> r

// export service
String host = findConfigedHosts(protocolConfig, registryURLs, map);
Integer port = findConfigedPorts(protocolConfig, name, map);
Integer port = findConfigedPorts(protocolConfig, name, map, protocolConfigNum);
URL url = new URL(name, host, port, getContextPath(protocolConfig).map(p -> p + "/" + path).orElse(path), map);

// You can customize Configurator to append extra parameters
Expand Down Expand Up @@ -647,11 +649,12 @@ private String findConfigedHosts(ProtocolConfig protocolConfig,
*
* @param protocolConfig
* @param name
* @param protocolConfigNum
* @return
*/
private Integer findConfigedPorts(ProtocolConfig protocolConfig,
String name,
Map<String, String> map) {
Map<String, String> map, int protocolConfigNum) {
Integer portToBind = null;

// parse bind port from environment
Expand All @@ -677,19 +680,28 @@ private Integer findConfigedPorts(ProtocolConfig protocolConfig,
}
}

// save bind port, used as url's key later
map.put(BIND_PORT_KEY, String.valueOf(portToBind));

// registry port, not used as bind port by default
String portToRegistryStr = getValueFromConfig(protocolConfig, DUBBO_PORT_TO_REGISTRY);
String key = DUBBO_PORT_TO_REGISTRY;
if (protocolConfigNum > 1) {
key = getProtocolConfigId(protocolConfig).toUpperCase() + "_" + key;
}
String portToRegistryStr = getValueFromConfig(protocolConfig, key);
Integer portToRegistry = parsePort(portToRegistryStr);
if (portToRegistry == null) {
portToRegistry = portToBind;
}

// save bind port, used as url's key later
map.put(BIND_PORT_KEY, String.valueOf(portToRegistry));

return portToRegistry;
}


private String getProtocolConfigId(ProtocolConfig config) {
return Optional.ofNullable(config.getId()).orElse("dubbo");
}

private Integer parsePort(String configPort) {
Integer port = null;
if (configPort != null && configPort.length() > 0) {
Expand Down

0 comments on commit 24400d0

Please sign in to comment.