- [ ] I have searched the [issues](https://github.com/apache/dubbo/issues) of 
this repository and believe that this is not a duplicate.
- [x] I have checked the 
[FAQ](https://github.com/apache/dubbo/blob/master/FAQ.md) of this repository 
and believe that this is not a duplicate.

### Environment

Dubbo version: 2.7.5
Operating System version: Mac OS 10.15.2
Java version: 1.8.0_231

### Steps to reproduce this issue

1. 启动基础环境 和 provider服务,步骤同 [issue 
5625](https://github.com/apache/dubbo/issues/5625)
2. 启动consumer服务

### Expected Result

* consumer启动成功,无报错信息

* consumer能够被访问,并正确地收到provider返回的数据

### Actual Result

* consumer启动失败,日志报错

```
2020-01-10 10:08:01.416  WARN 20243 --- [           main] 
m.DynamicConfigurationServiceNameMapping :  [DUBBO] null, dubbo version: 2.7.5, 
current host: ***

java.lang.NullPointerException: null
        at java.util.TreeMap.compare(TreeMap.java:1294) ~[na:1.8.0_231]
        at java.util.TreeMap.put(TreeMap.java:538) ~[na:1.8.0_231]
        at java.util.TreeSet.add(TreeSet.java:255) ~[na:1.8.0_231]
        at 
org.apache.dubbo.configcenter.support.etcd.EtcdDynamicConfiguration.getConfigKeys(EtcdDynamicConfiguration.java:128)
 ~[classes/:2.7.5]
        at 
org.apache.dubbo.common.config.configcenter.wrapper.CompositeDynamicConfiguration.lambda$getConfigKeys$5(CompositeDynamicConfiguration.java:82)
 ~[dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.common.config.configcenter.wrapper.CompositeDynamicConfiguration.iterateConfigOperation(CompositeDynamicConfiguration.java:94)
 ~[dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.common.config.configcenter.wrapper.CompositeDynamicConfiguration.getConfigKeys(CompositeDynamicConfiguration.java:82)
 ~[dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.metadata.DynamicConfigurationServiceNameMapping.lambda$get$1(DynamicConfigurationServiceNameMapping.java:74)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.metadata.DynamicConfigurationServiceNameMapping.execute(DynamicConfigurationServiceNameMapping.java:92)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.metadata.DynamicConfigurationServiceNameMapping.get(DynamicConfigurationServiceNameMapping.java:73)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.findMappedServices(ServiceDiscoveryRegistry.java:854)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.getServices(ServiceDiscoveryRegistry.java:818)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.subscribeURLs(ServiceDiscoveryRegistry.java:328)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.doSubscribe(ServiceDiscoveryRegistry.java:294)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.registry.support.FailbackRegistry.subscribe(FailbackRegistry.java:299)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.subscribe(ServiceDiscoveryRegistry.java:289)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.registry.ListenerRegistryWrapper.subscribe(ListenerRegistryWrapper.java:105)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.registry.integration.RegistryDirectory.subscribe(RegistryDirectory.java:174)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.registry.integration.RegistryProtocol.doRefer(RegistryProtocol.java:415)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.registry.integration.RegistryProtocol.refer(RegistryProtocol.java:396)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper.refer(ProtocolFilterWrapper.java:151)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper.refer(ProtocolListenerWrapper.java:70)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.qos.protocol.QosProtocolWrapper.refer(QosProtocolWrapper.java:73)
 [dubbo-2.7.5.jar:2.7.5]
        at org.apache.dubbo.rpc.Protocol$Adaptive.refer(Protocol$Adaptive.java) 
[dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:324) 
[dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:266) 
[dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:151) 
[dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.getOrCreateProxy(ReferenceAnnotationBeanPostProcessor.java:249)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.doGetInjectedBean(ReferenceAnnotationBeanPostProcessor.java:142)
 [dubbo-2.7.5.jar:2.7.5]
        at 
com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor.getInjectedObject(AbstractAnnotationBeanPostProcessor.java:358)
 [spring-context-support-1.0.5.jar:na]
        at 
com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor$AnnotatedFieldElement.inject(AbstractAnnotationBeanPostProcessor.java:538)
 [spring-context-support-1.0.5.jar:na]
        at 
org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
 [spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor.postProcessPropertyValues(AbstractAnnotationBeanPostProcessor.java:141)
 [spring-context-support-1.0.5.jar:na]
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264)
 [spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
 [spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
 [spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
 [spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
 [spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
 [spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
 [spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
 [spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
 [spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
 [spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
 [spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
        at 
org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) 
[spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
        at 
org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
 [spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
        at 
org.springframework.boot.SpringApplication.run(SpringApplication.java:303) 
[spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
        at 
org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) 
[spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
        at 
org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) 
[spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
        at com.douyu.DubboConsumerDemo.main(DubboConsumerDemo.java:30) 
[classes/:na]

......

java.lang.IllegalStateException: Should has at least one way to know which 
services this interface belongs to, subscription url: ......
        at 
org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.subscribeURLs(ServiceDiscoveryRegistry.java:330)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.doSubscribe(ServiceDiscoveryRegistry.java:294)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.registry.support.FailbackRegistry.subscribe(FailbackRegistry.java:299)
 ~[dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.subscribe(ServiceDiscoveryRegistry.java:289)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.registry.ListenerRegistryWrapper.subscribe(ListenerRegistryWrapper.java:105)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.registry.integration.RegistryDirectory.subscribe(RegistryDirectory.java:174)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.registry.integration.RegistryProtocol.doRefer(RegistryProtocol.java:415)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.registry.integration.RegistryProtocol.refer(RegistryProtocol.java:396)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper.refer(ProtocolFilterWrapper.java:151)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper.refer(ProtocolListenerWrapper.java:70)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.qos.protocol.QosProtocolWrapper.refer(QosProtocolWrapper.java:73)
 [dubbo-2.7.5.jar:2.7.5]
        at org.apache.dubbo.rpc.Protocol$Adaptive.refer(Protocol$Adaptive.java) 
[dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:324) 
[dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:266) 
[dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:151) 
[dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.getOrCreateProxy(ReferenceAnnotationBeanPostProcessor.java:249)
 [dubbo-2.7.5.jar:2.7.5]
        at 
org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.doGetInjectedBean(ReferenceAnnotationBeanPostProcessor.java:142)
 [dubbo-2.7.5.jar:2.7.5]
        at 
com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor.getInjectedObject(AbstractAnnotationBeanPostProcessor.java:358)
 [spring-context-support-1.0.5.jar:na]
        at 
com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor$AnnotatedFieldElement.inject(AbstractAnnotationBeanPostProcessor.java:538)
 [spring-context-support-1.0.5.jar:na]
        at 
org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
 [spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor.postProcessPropertyValues(AbstractAnnotationBeanPostProcessor.java:141)
 [spring-context-support-1.0.5.jar:na]
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264)
 [spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
 [spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
 [spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
 [spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
 [spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
 [spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
 [spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
 [spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
 [spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
 [spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE]
        at 
org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
 [spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
        at 
org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) 
[spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
        at 
org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
 [spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
        at 
org.springframework.boot.SpringApplication.run(SpringApplication.java:303) 
[spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
        at 
org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) 
[spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
        at 
org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) 
[spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
        at com.douyu.DubboConsumerDemo.main(DubboConsumerDemo.java:30) 
[classes/:na]
```

* consumer访问失败,找不到服务

![image](https://user-images.githubusercontent.com/2261374/72124498-f74c2280-339f-11ea-984e-1fb86272a8fc.png)

### 相关代码和配置

```java
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import testproto.DubboGreeterGrpc;
import testproto.HelloReply;
import testproto.HelloRequest;

@RestController
public class TestController {

    @Reference(version = "1.0.0", timeout = 5000, check = false)
    private DubboGreeterGrpc.IGreeter greeter;

    @RequestMapping("/")
    public String test() {
        HelloRequest request = HelloRequest.newBuilder()
                .setName("test: " + System.currentTimeMillis())
                .build();
        HelloReply reply = greeter.sayHello(request);
        return reply.getMessage();
    }

}
```

```
spring.application.name=dubbo-consumer
server.port=8081
dubbo.application.name=${spring.application.name}
dubbo.application.metadata=remote
dubbo.protocol.name=grpc
dubbo.protocol.port=8889
dubbo.registry.address=etcd3://127.0.0.1:2379?registry-type=service
dubbo.provider.threads=10
dubbo.provider.threadpool=fixed
dubbo.provider.loadbalance=roundrobin
dubbo.metadata-report.address=etcd://127.0.0.1:2379
dubbo.config-center.address=etcd://127.0.0.1:2379
```

[ Full content available at: https://github.com/apache/dubbo/issues/5627 ]
This message was relayed via gitbox.apache.org for 
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to