Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dataId有超过2个冒号时,不能正常获取配置? #10067

Closed
sniper-xx opened this issue Mar 9, 2023 · 3 comments
Closed

dataId有超过2个冒号时,不能正常获取配置? #10067

sniper-xx opened this issue Mar 9, 2023 · 3 comments

Comments

@sniper-xx
Copy link

sniper-xx commented Mar 9, 2023

Describe the bug
nacos 版本: v2.2.0
nacos client 版本: v2.2.0-rc

dubbo生成的配置项带有两个':', 如: org.xxx.user.service.UserService:1.0::provider:test-service-provider, 我通过nacos native api直接读取配置数据时,content总是为空;

配置中心 dataId: org.xxx.user.service.UserService:1.0::provider:test-service-provider

客户端代码:

      var configService = NacosFactory.createConfigService(props);
       String content = configService.getConfig(dataId", "dubbo", 5000);
       System.out.println(content);

问题:
content总是为 null

备注:

自己创建的配置项,如果只有一个 ':' 可以访问, 超过2个时,也同样不能访问。 可以断定,客户端配置没有问题,问题估计出在dataId的规则上

请问这是bug,还是其他原因所导致?

@Daydreamer-ia
Copy link
Contributor

Daydreamer-ia commented Mar 9, 2023

不是 dataId 的规则限制,是 : 这个符号有点刁钻了。nacos 在有外部数据源的情况下,会把配置加载到本地文件系统,然后在查询的时候从文件系统 transferTo 出去。具体是在 ${nacos-home} 下的 data 目录,配置将会以 dataId 为文件名的文件形式存放,然后有些操作系统,比如 windows,对文件命名有限制的,一些特殊符号如 : 无法给文件命名,导致一开始这个配置对应的文件就不存在,所以在你发起查询的时候,自然就查询不到。
在控制台上之所以能看到,是因为查询是从外部数据源查询的。

@Daydreamer-ia
Copy link
Contributor

@KomachiSion 这块在查询的时候,能否在文件系统配置加载空结果的情况下,从数据库里查询一次来给查询做一次兜底呢?

@sniper-xx
Copy link
Author

@KomachiSion 这块在查询的时候,能否在文件系统配置加载空结果的情况下,从数据库里查询一次来给查询做一次兜底呢?

昨天也跟踪源码到这里了。 希望能增加数据库查询兜底机制,或者调整文件存储命名规则,不然windows下适配dubbo就存在问题。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants