apache / apache/dubbo

[Bug] dubbo-3.3.0-beta5 start warning exporterMap can not be null

Open
#14,642 2 comments 0 reactions 0 assignees View on GitHub
component/need-triage type/need-triage
Dominant language
Java
Stars
41.6k
Forks
26.4k
Avg merge
15h 13m
Merged PRs (30d)
4

Description

### Pre-check

- [X] I am sure that all the content I provide is in English.

### Search before asking

- [X] I had searched in the [issues](https://github.com/apache/dubbo/issues?q=is%3Aissue) and found no similar issues.

### Apache Dubbo Component

Java SDK (apache/dubbo)

### Dubbo Version

dubbo-3.3.0-beta5 jdk1.8.333 windows 11

### Steps to reproduce this issue

一、I have 2 dynamic config in nacos,
1. app dynamic config
```
dubbo-provider.configurators
---
configVersion: v3.0
enabled: true
scope: application
key: dubbo-provider
configs:
- side: provider
parameters:
timeout: 9100
```

2. service dynamic config
```
org.apache.dubbo.springboot.demo.DemoService:1.0:test1.configurators
---
configVersion: v3.0
enabled: true
scope: service
key: test1/org.apache.dubbo.springboot.demo.DemoService:1.0
configs:
- side: provider
parameters:
timeout: 9200
- side: consumer
parameters:
timeout: 9400
```
二、when i start the provider, dubbo.application.name: dubbo-provider
report the warning log:
```
17:12:56.904 |-INFO [main] ubbo.config.deploy.DefaultModuleDeployer:149 -| [DUBBO] Dubbo Module[1.1.0] has been initialized!, dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
17:12:56.909 |-INFO [main] ubbo.config.deploy.DefaultModuleDeployer:149 -| [DUBBO] Dubbo Module[1.1.1] has been initialized!, dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
17:12:57.000 |-INFO [main] .auth.spi.client.ClientAuthPluginManager:56 -| [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.impl.NacosClientAuthServiceImpl success.
17:12:57.000 |-INFO [main] .auth.spi.client.ClientAuthPluginManager:56 -| [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.ram.RamClientAuthServiceImpl success.
17:12:57.677 |-INFO [main] config.deploy.DefaultApplicationDeployer:243 -| [DUBBO] Dubbo Application[1.1](dubbo-provider) has been initialized!, dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
17:12:57.747 |-INFO [main] ubbo.config.deploy.DefaultModuleDeployer:365 -| [DUBBO] Dubbo Module[1.1.1] is starting., dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
17:12:57.747 |-INFO [main] config.deploy.DefaultApplicationDeployer:1328 -| [DUBBO] Dubbo Application[1.1](dubbo-provider) is starting., dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
17:12:58.344 |-INFO [main] he.dubbo.qos.protocol.QosProtocolWrapper:109 -| [DUBBO] qos won't be started because it is disabled. Please check dubbo.application.qos.enable is configured either in system property, dubbo.properties or XML/spring-boot configuration., dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
17:12:58.347 |-INFO [main] org.apache.dubbo.config.ServiceConfig:987 -| [DUBBO] Export dubbo service org.apache.dubbo.springboot.demo.DemoService to local registry url : injvm://127.0.0.1/org.apache.dubbo.springboot.demo.DemoService?anyhost=true&application=dubbo-provider&background=false&bind.ip=192.168.56.1&bind.port=38008&deprecated=false&dubbo=2.0.2&dynamic=true&executor-management-mode=isolation&exporter.listener=injvm&file-cache=true&generic=false&group=test2&interface=org.apache.dubbo.springboot.demo.DemoService&logger=slf4j&metadata-type=local&methods=sayHello&pid=44076&prefer.serialization=hessian2,fastjson2&qos.enable=false®ister-mode=all&release=3.3.0-beta.5&revision=2.0&sayHello.return=true&sayHello.sent=true&sayHello.timeout=80000&side=provider&timeout=70000×tamp=1725613977918&triple.enable.push=false&triple.header.table.size=4096&triple.initial.buffer.size=16384&triple.initial.window.size=8388608&triple.max.body.size=8388608&triple.max.chunk.size=8388608&triple.max.concurrent.streams=2147483647&triple.max.frame.size=8388608&triple.max.header.list.size=32768&triple.max.header.size=8192&triple.max.initial.line.length=4096&triple.max.response.body.size=8388608&version=2.0, dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
17:12:58.347 |-INFO [main] org.apache.dubbo.config.ServiceConfig:932 -| [DUBBO] Register dubbo service org.apache.dubbo.springboot.demo.DemoService url dubbo://192.168.56.1:38008/org.apache.dubbo.springboot.demo.DemoService?anyhost=true&application=dubbo-provider&background=false&bind.ip=192.168.56.1&bind.port=38008&deprecated=false&dubbo=2.0.2&dynamic=true&executor-management-mode=isolation&file-cache=true&generic=false&group=test2&interface=org.apache.dubbo.springboot.demo.DemoService&logger=slf4j&metadata-type=local&methods=sayHello&pid=44076&prefer.serialization=hessian2,fastjson2&qos.enable=false®ister-mode=all&release=3.3.0-beta.5&revision=2.0&sayHello.return=true&sayHello.sent=true&sayHello.timeout=80000&service-name-mapping=true&side=provider&timeout=70000×tamp=1725613977918&triple.enable.push=false&triple.header.table.size=4096&triple.initial.buffer.size=16384&triple.initial.window.size=8388608&triple.max.body.size=8388608&triple.max.chunk.size=8388608&triple.max.concurrent.streams=2147483647&triple.max.frame.size=8388608&triple.max.header.list.size=32768&triple.max.header.size=8192&triple.max.initial.line.length=4096&triple.max.response.body.size=8388608&version=2.0 to registry dubbo.nacos:38848, dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
17:12:58.350 |-INFO [main] he.dubbo.qos.protocol.QosProtocolWrapper:109 -| [DUBBO] qos won't be started because it is disabled. Please check dubbo.application.qos.enable is configured either in system property, dubbo.properties or XML/spring-boot configuration., dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
17:12:58.483 |-INFO [main] nfigurator.override.OverrideConfigurator:36 -| [DUBBO] Start overriding url dubbo://192.168.56.1:38008/org.apache.dubbo.springboot.demo.DemoService?anyhost=true&application=dubbo-provider&background=false&bind.ip=192.168.56.1&bind.port=38008&deprecated=false&dubbo=2.0.2&dynamic=true&executor-management-mode=isolation&file-cache=true&generic=false&group=test2&interface=org.apache.dubbo.springboot.demo.DemoService&logger=slf4j&metadata-type=local&methods=sayHello&pid=44076&prefer.serialization=hessian2,fastjson2&qos.enable=false®ister-mode=all&release=3.3.0-beta.5&revision=2.0&sayHello.return=true&sayHello.sent=true&sayHello.timeout=80000&service-name-mapping=true&side=provider&timeout=70000×tamp=1725613977918&triple.enable.push=false&triple.header.table.size=4096&triple.initial.buffer.size=16384&triple.initial.window.size=8388608&triple.max.body.size=8388608&triple.max.chunk.size=8388608&triple.max.concurrent.streams=2147483647&triple.max.frame.size=8388608&triple.max.header.list.size=32768&triple.max.header.size=8192&triple.max.initial.line.length=4096&triple.max.response.body.size=8388608&version=2.0 with override url override://0.0.0.0/*?providerAddresses=0.0.0.0&timeout=9100, dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
17:12:58.557 |-INFO [main] nfigurator.override.OverrideConfigurator:36 -| [DUBBO] Start overriding url dubbo://192.168.56.1:38008/org.apache.dubbo.springboot.demo.DemoService?anyhost=true&application=dubbo-provider&background=false&bind.ip=192.168.56.1&bind.port=38008&deprecated=false&dubbo=2.0.2&dynamic=true&executor-management-mode=isolation&file-cache=true&generic=false&group=test2&interface=org.apache.dubbo.springboot.demo.DemoService&logger=slf4j&metadata-type=local&methods=sayHello&pid=44076&prefer.serialization=hessian2,fastjson2&providerAddresses=0.0.0.0&qos.enable=false®ister-mode=all&release=3.3.0-beta.5&revision=2.0&sayHello.return=true&sayHello.sent=true&sayHello.timeout=80000&service-name-mapping=true&side=provider&timeout=9100×tamp=1725613977918&triple.enable.push=false&triple.header.table.size=4096&triple.initial.buffer.size=16384&triple.initial.window.size=8388608&triple.max.body.size=8388608&triple.max.chunk.size=8388608&triple.max.concurrent.streams=2147483647&triple.max.frame.size=8388608&triple.max.header.list.size=32768&triple.max.header.size=8192&triple.max.initial.line.length=4096&triple.max.response.body.size=8388608&version=2.0 with override url override://0.0.0.0/org.apache.dubbo.springboot.demo.DemoService?providerAddresses=0.0.0.0&timeout=9200, dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
17:12:58.559 |-INFO [main] he.dubbo.qos.protocol.QosProtocolWrapper:109 -| [DUBBO] qos won't be started because it is disabled. Please check dubbo.application.qos.enable is configured either in system property, dubbo.properties or XML/spring-boot configuration., dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
17:12:58.781 |-INFO [nacos.client.config.listener.task-0] integration.AbstractConfiguratorListener:91 -| [DUBBO] Notification of overriding rule, change type is: ADDED, raw config content is:
---
configVersion: v3.0
enabled: true
scope: service
key: test2/org.apache.dubbo.springboot.demo.DemoService:2.0
configs:
- side: provider
parameters:
timeout: 9200
- side: consumer
parameters:
timeout: 9400
, dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
17:12:58.782 |-WARN [nacos.client.config.listener.task-0] bo.registry.integration.RegistryProtocol: -| [DUBBO] error state, exporterMap can not be null, dubbo version: 3.3.0-beta.5, current host: 192.168.56.1, error code: 99-0. This may be caused by error state, exporterMap can not be null, go to https://dubbo.apache.org/faq/99/0 to find instructions.
java.lang.IllegalStateException: error state, exporterMap can not be null
at org.apache.dubbo.registry.integration.RegistryProtocol$OverrideListener.doOverrideIfNecessary(RegistryProtocol.java:846) ~[dubbo-3.3.0-beta.5.jar:3.3.0-beta.5]
at org.apache.dubbo.registry.integration.RegistryProtocol$ServiceConfigurationListener.notifyOverrides(RegistryProtocol.java:940) ~[dubbo-3.3.0-beta.5.jar:3.3.0-beta.5]
at org.apache.dubbo.registry.integration.AbstractConfiguratorListener.process(AbstractConfiguratorListener.java:104) ~[dubbo-3.3.0-beta.5.jar:3.3.0-beta.5]
at org.apache.dubbo.configcenter.support.nacos.NacosDynamicConfiguration$NacosConfigListener.lambda$innerReceive$0(NacosDynamicConfiguration.java:363) ~[dubbo-3.3.0-beta.5.jar:3.3.0-beta.5]
at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:895) ~[?:1.8.0_333]
at java.util.concurrent.CopyOnWriteArraySet.forEach(CopyOnWriteArraySet.java:404) ~[?:1.8.0_333]
at org.apache.dubbo.configcenter.support.nacos.NacosDynamicConfiguration$NacosConfigListener.innerReceive(NacosDynamicConfiguration.java:363) ~[dubbo-3.3.0-beta.5.jar:3.3.0-beta.5]
at com.alibaba.nacos.api.config.listener.AbstractSharedListener.receiveConfigInfo(AbstractSharedListener.java:40) ~[nacos-client-2.4.0.jar:?]
at com.alibaba.nacos.client.config.impl.CacheData$1.run(CacheData.java:440) ~[nacos-client-2.4.0.jar:?]
at com.alibaba.nacos.client.config.impl.CacheData.safeNotifyListener(CacheData.java:483) ~[nacos-client-2.4.0.jar:?]
at com.alibaba.nacos.client.config.impl.CacheData.checkListenerMd5(CacheData.java:324) ~[nacos-client-2.4.0.jar:?]
at com.alibaba.nacos.client.config.impl.ClientWorker$ConfigRpcTransportClient.refreshContentAndCheck(ClientWorker.java:944) ~[nacos-client-2.4.0.jar:?]
at com.alibaba.nacos.client.config.impl.ClientWorker$ConfigRpcTransportClient.refreshContentAndCheck(ClientWorker.java:925) ~[nacos-client-2.4.0.jar:?]
at com.alibaba.nacos.client.config.impl.ClientWorker$ConfigRpcTransportClient.lambda$checkListenCache$7(ClientWorker.java:1034) ~[nacos-client-2.4.0.jar:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_333]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_333]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_333]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_333]
at java.lang.Thread.run(Thread.java:750) ~[?:1.8.0_333]
17:12:58.897 |-INFO [main] .dubbo.remoting.transport.AbstractServer:71 -| [DUBBO] Start NettyServer bind /0.0.0.0:38008, export /192.168.56.1:38008, dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
17:12:58.930 |-INFO [main] .auth.spi.client.ClientAuthPluginManager:56 -| [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.impl.NacosClientAuthServiceImpl success.
17:12:58.930 |-INFO [main] .auth.spi.client.ClientAuthPluginManager:56 -| [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.ram.RamClientAuthServiceImpl success.
17:12:59.473 |-INFO [main] registry.nacos.NacosNamingServiceWrapper:71 -| [DUBBO] Nacos batch register enable: true, dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
17:12:59.484 |-INFO [main] y.client.migration.MigrationRuleListener:106 -| [DUBBO] Listening for migration rules on dataId dubbo-provider.migration, group DUBBO_SERVICEDISCOVERY_MIGRATION, dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
17:12:59.598 |-INFO [main] org.apache.dubbo.config.ServiceConfig:932 -| [DUBBO] Register dubbo service org.apache.dubbo.springboot.demo.DemoService url dubbo://192.168.56.1:38008/org.apache.dubbo.springboot.demo.DemoService?anyhost=true&application=dubbo-provider&background=false&bind.ip=192.168.56.1&bind.port=38008&deprecated=false&dubbo=2.0.2&dynamic=true&executor-management-mode=isolation&file-cache=true&generic=false&group=test2&interface=org.apache.dubbo.springboot.demo.DemoService&logger=slf4j&metadata-type=local&methods=sayHello&pid=44076&prefer.serialization=hessian2,fastjson2&qos.enable=false®ister-mode=all&release=3.3.0-beta.5&revision=2.0&sayHello.return=true&sayHello.sent=true&sayHello.timeout=80000&service-name-mapping=true&side=provider&timeout=70000×tamp=1725613977918&triple.enable.push=false&triple.header.table.size=4096&triple.initial.buffer.size=16384&triple.initial.window.size=8388608&triple.max.body.size=8388608&triple.max.chunk.size=8388608&triple.max.concurrent.streams=2147483647&triple.max.frame.size=8388608&triple.max.header.list.size=32768&triple.max.header.size=8192&triple.max.initial.line.length=4096&triple.max.response.body.size=8388608&version=2.0 to registry dubbo.nacos:38848, dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
17:12:59.598 |-INFO [main] he.dubbo.qos.protocol.QosProtocolWrapper:109 -| [DUBBO] qos won't be started because it is disabled. Please check dubbo.application.qos.enable is configured either in system property, dubbo.properties or XML/spring-boot configuration., dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
17:12:59.599 |-INFO [main] nfigurator.override.OverrideConfigurator:36 -| [DUBBO] Start overriding url dubbo://192.168.56.1:38008/org.apache.dubbo.springboot.demo.DemoService?anyhost=true&application=dubbo-provider&background=false&bind.ip=192.168.56.1&bind.port=38008&deprecated=false&dubbo=2.0.2&dynamic=true&executor-management-mode=isolation&file-cache=true&generic=false&group=test2&interface=org.apache.dubbo.springboot.demo.DemoService&logger=slf4j&metadata-type=local&methods=sayHello&pid=44076&prefer.serialization=hessian2,fastjson2&qos.enable=false®ister-mode=all&release=3.3.0-beta.5&revision=2.0&sayHello.return=true&sayHello.sent=true&sayHello.timeout=80000&service-name-mapping=true&side=provider&timeout=70000×tamp=1725613977918&triple.enable.push=false&triple.header.table.size=4096&triple.initial.buffer.size=16384&triple.initial.window.size=8388608&triple.max.body.size=8388608&triple.max.chunk.size=8388608&triple.max.concurrent.streams=2147483647&triple.max.frame.size=8388608&triple.max.header.list.size=32768&triple.max.header.size=8192&triple.max.initial.line.length=4096&triple.max.response.body.size=8388608&version=2.0 with override url override://0.0.0.0/*?providerAddresses=0.0.0.0&timeout=9100, dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
17:12:59.677 |-INFO [main] nfigurator.override.OverrideConfigurator:36 -| [DUBBO] Start overriding url dubbo://192.168.56.1:38008/org.apache.dubbo.springboot.demo.DemoService?anyhost=true&application=dubbo-provider&background=false&bind.ip=192.168.56.1&bind.port=38008&deprecated=false&dubbo=2.0.2&dynamic=true&executor-management-mode=isolation&file-cache=true&generic=false&group=test2&interface=org.apache.dubbo.springboot.demo.DemoService&logger=slf4j&metadata-type=local&methods=sayHello&pid=44076&prefer.serialization=hessian2,fastjson2&providerAddresses=0.0.0.0&qos.enable=false®ister-mode=all&release=3.3.0-beta.5&revision=2.0&sayHello.return=true&sayHello.sent=true&sayHello.timeout=80000&service-name-mapping=true&side=provider&timeout=9100×tamp=1725613977918&triple.enable.push=false&triple.header.table.size=4096&triple.initial.buffer.size=16384&triple.initial.window.size=8388608&triple.max.body.size=8388608&triple.max.chunk.size=8388608&triple.max.concurrent.streams=2147483647&triple.max.frame.size=8388608&triple.max.header.list.size=32768&triple.max.header.size=8192&triple.max.initial.line.length=4096&triple.max.response.body.size=8388608&version=2.0 with override url override://0.0.0.0/org.apache.dubbo.springboot.demo.DemoService?providerAddresses=0.0.0.0&timeout=9200, dubbo version: 3.3.0-beta.5, current host: 192.168.56.1
```

### What you expected to happen

does not report warning log, because it report the warnning every service export, too many warnning

### Anything else

_No response_

### Are you willing to submit a pull request to fix on your own?

- [ ] Yes I am willing to submit a pull request on my own!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct)

Contributor guide

Open the contributing guide

Research direction

Start with RegistryProtocol.java at doOverrideIfNecessary (line 846) and notifyOverrides (line 940), then trace AbstractConfiguratorListener.process and NacosDynamicConfiguration.NacosConfigListener. Reproduce the provider startup with the two Nacos dynamic configurations shown. Done means the overrides are processed without the “exporterMap can not be null” warning.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
distributed-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.