[Bug] dubbo-3.3.0-beta5 start warning exporterMap can not be null
- 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
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