Skip to content

在 registry.simplified=true 时getColonSeparatedKey() 结果不完整 #4621

@jimgreat

Description

@jimgreat
  • [ *] I have searched the issues of this repository and believe that this is not a duplicate.
  • [ *] I have checked the FAQ of this repository and believe that this is not a duplicate.

Environment

  • Dubbo version: 2.7.3
  • Operating System version: MAC_OS
  • Java version: 1.8.0_181

Steps to reproduce this issue

URL.getColonSeparatedKey() 正常结果应该是{interface}:[version]:[group]
在获取{interface}时,是直接通过INTERFACE_KEY从parameters中获取的,在registry.simplified=true 时:

final URL registeredProviderUrl = getRegisteredProviderUrl(providerUrl, registryUrl);

registeredProviderUrl 的 parameters中是没有INTERFACE_KEY的。
导致NacosRegistry在获取serviceName时不完整。

在append时对INTERFACE_KEY进行特殊处理可以解决
String parameterValue = INTERFACE_KEY.equals(parameterName)?getServiceInterface():this.getParameter(parameterName);
`

public String getColonSeparatedKey() {
    StringBuilder serviceNameBuilder = new StringBuilder();
    append(serviceNameBuilder, INTERFACE_KEY, true);
    append(serviceNameBuilder, VERSION_KEY, false);
    append(serviceNameBuilder, GROUP_KEY, false);
    return serviceNameBuilder.toString();
}

private void append(StringBuilder target, String parameterName, boolean first) {
    String parameterValue = INTERFACE_KEY.equals(parameterName)?getServiceInterface():this.getParameter(parameterName);
    if (!StringUtils.isBlank(parameterValue)) {
        if (!first) {
            target.append(":");
        }
        target.append(parameterValue);
    } else {
        target.append(":");
    }
}`

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions