You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In divide plugin. If push sync data to nacos or zookeeper, the dataId for proxy selector and discovery is not unique, because the suffix dataId for proxy selector and discovery is is the name of the selector and not the id. if there are two selector and they have the same name, the config will be covered.
use nacos as sync center.
there are two selector and they have the same name.one selector's upstream is 172.16.22.22:17203, the other is 172.16.22.22:17204.
There is only one piece of configuration data on nacos。
the discovery config for two selector should have two config with different dataId, but only one.
If the selector has a special character like '/test', push sync data to nacos will fail due to nacos dataId format validation.
Expected Behavior
I think the value for {namespaceId}.proxy.selector.divide.list and {namespaceId}..discovery.divide.list is selector's id wiil be better。And the detail config dataId's suffix for selector is selectorid too.
Steps To Reproduce
check out to master branch and pull the lastest code.
use nacos as data sync center.
add two divide selector with same name like 'test'.
change one of the selector's name with a special character '/test'.
Environment
ShenYu version(s): branch master latest
Debug logs
com.alibaba.nacos.api.exception.NacosException: dataId invalid
at com.alibaba.nacos.client.config.utils.ParamUtils.checkKeyParam(ParamUtils.java:102)
at com.alibaba.nacos.client.config.utils.ParamUtils.checkParam(ParamUtils.java:159)
at com.alibaba.nacos.client.config.NacosConfigService.publishConfigInner(NacosConfigService.java:226)
at com.alibaba.nacos.client.config.NacosConfigService.publishConfig(NacosConfigService.java:131)
at org.apache.shenyu.admin.listener.nacos.NacosDataChangedListener.doPublishConfig(NacosDataChangedListener.java:49)
at org.apache.shenyu.admin.listener.AbstractNodeDataChangedListener.publishConfig(AbstractNodeDataChangedListener.java:294)
at org.apache.shenyu.admin.listener.AbstractNodeDataChangedListener.lambda$onCommonMultiChanged$13(AbstractNodeDataChangedListener.java:230)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at org.apache.shenyu.admin.listener.AbstractNodeDataChangedListener.onCommonMultiChanged(AbstractNodeDataChangedListener.java:230)
at org.apache.shenyu.admin.listener.AbstractNodeDataChangedListener.onDiscoveryUpstreamChanged(AbstractNodeDataChangedListener.java:288)
at org.apache.shenyu.admin.listener.DataChangedEventDispatcher.onApplicationEvent(DataChangedEventDispatcher.java:102)
at org.apache.shenyu.admin.listener.DataChangedEventDispatcher.onApplicationEvent(DataChangedEventDispatcher.java:50)
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:178)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:451)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:384)
at org.apache.shenyu.admin.service.impl.UpstreamCheckService.updateSelectorHandler(UpstreamCheckService.java:435)
at org.apache.shenyu.admin.service.impl.UpstreamCheckService.updateHandler(UpstreamCheckService.java:372)
at org.apache.shenyu.admin.service.impl.UpstreamCheckService.lambda$check$8(UpstreamCheckService.java:360)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run$$$capture(CompletableFuture.java:1804)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796)
at java.base/java.util.concurrent.ForkJoinTask.doExec$$$capture(ForkJoinTask.java:373)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
2024-11-13 14:53:16 [ForkJoinPool.commonPool-worker-15] ERROR org.apache.shenyu.admin.listener.AbstractNodeDataChangedListener - AbstractNodeDataChangedListener onCommonMultiChanged error
org.apache.shenyu.common.exception.ShenyuException: dataId invalid
at org.apache.shenyu.admin.listener.nacos.NacosDataChangedListener.doPublishConfig(NacosDataChangedListener.java:56)
at org.apache.shenyu.admin.listener.AbstractNodeDataChangedListener.publishConfig(AbstractNodeDataChangedListener.java:294)
at org.apache.shenyu.admin.listener.AbstractNodeDataChangedListener.lambda$onCommonMultiChanged$13(AbstractNodeDataChangedListener.java:230)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at org.apache.shenyu.admin.listener.AbstractNodeDataChangedListener.onCommonMultiChanged(AbstractNodeDataChangedListener.java:230)
at org.apache.shenyu.admin.listener.AbstractNodeDataChangedListener.onDiscoveryUpstreamChanged(AbstractNodeDataChangedListener.java:288)
at org.apache.shenyu.admin.listener.DataChangedEventDispatcher.onApplicationEvent(DataChangedEventDispatcher.java:102)
at org.apache.shenyu.admin.listener.DataChangedEventDispatcher.onApplicationEvent(DataChangedEventDispatcher.java:50)
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:178)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:451)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:384)
at org.apache.shenyu.admin.service.impl.UpstreamCheckService.updateSelectorHandler(UpstreamCheckService.java:435)
at org.apache.shenyu.admin.service.impl.UpstreamCheckService.updateHandler(UpstreamCheckService.java:372)
at org.apache.shenyu.admin.service.impl.UpstreamCheckService.lambda$check$8(UpstreamCheckService.java:360)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run$$$capture(CompletableFuture.java:1804)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796)
at java.base/java.util.concurrent.ForkJoinTask.doExec$$$capture(ForkJoinTask.java:373)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)```
### Anything else?
_No response_
The text was updated successfully, but these errors were encountered:
Is there an existing issue for this?
Current Behavior
Expected Behavior
I think the value for {namespaceId}.proxy.selector.divide.list and {namespaceId}..discovery.divide.list is selector's id wiil be better。And the detail config dataId's suffix for selector is selectorid too.
Steps To Reproduce
Environment
Debug logs
The text was updated successfully, but these errors were encountered: