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

namespace大小写问题 #2260

Open
xdaijin opened this issue May 21, 2019 · 13 comments
Open

namespace大小写问题 #2260

xdaijin opened this issue May 21, 2019 · 13 comments
Labels
kind/report-problem Categorizes issue when someone report the problem he/she meeted

Comments

@xdaijin
Copy link

xdaijin commented May 21, 2019

再创建namespace的时候是大小写敏感的,但是configservice里有个AppNamespaceServiceWithCache会缓存AppNamespace,并且是大小写不敏感的。这会导致加载namespace的时候会加载到同一个namespace。

@nobodyiam
Copy link
Member

创建namespace应该也是大小写不敏感的

@Adol1111
Copy link

如果发生了删除,但不是管理员工具删除,好像就会有问题,总之是可以配置大小写不敏感的同名配置的

@nobodyiam
Copy link
Member

恩,从功能上来说应该是需要支持大小写不敏感的,看上去是在某些分支上有漏洞,不知对你这边的场景是什么样的,我们看看是否可以重现

@xdaijin
Copy link
Author

xdaijin commented May 27, 2019

场景是这样的,他们创了两个namespace,一个是redis.json,另一个是Redis.json,然后在namespace的界面通过"删除namespace"按钮把Redis.json给删除了,最后在加载redis.json这个配置的时候,在configService里面经过'namespace = namespaceUtil.normalizeNamespace(appId, namespace);'这行代码把redis.json转换成了缓存里的Redis.json,就加载不到了

@nobodyiam
Copy link
Member

normalizeNamespace这个确实是一个问题,不过我测试了一下,正常情况下如果已经有了redis.json,程序是不允许创建Redis.json的。。。

@Adol1111
Copy link

那可能是有了Redis.json,然后再删除Redis.json,再建立redis.json导致的?

@nobodyiam
Copy link
Member

尝试了一下也没能重现。。

@xdaijin
Copy link
Author

xdaijin commented May 30, 2019

我试了下,我们这边是能创建redis.json和Redis.json的,先创redis.json再创Redis.json之后只能用客户端拉redis.json会拿到Redis.json的内容。我们这边是基于1.2.0版本的,数据库是用的pg。

@Adol1111
Copy link

1.3添加了一个这个fix,是否跟这个有关,#1894 ,不过暂时没看到大小写转换,不知道大小写不同的情况是否会受到这个的影响

@nobodyiam
Copy link
Member

Mysql默认是不区分大小写的,所以apollo是依赖了这个特性做的大小写去重校验,是否是你们的mysql数据库开了区分大小写?

@Adol1111
Copy link

Adol1111 commented Jun 1, 2019

我们用的是postgresql,pg默认是区分大小写的,mysql连内容也不区分大小写吗?

@nobodyiam
Copy link
Member

mysql默认是不区分的

@Adol1111
Copy link

Adol1111 commented Jun 2, 2019

我觉得这个设计有点问题

  1. 把大小写敏感这么重要的事情直接交给了第三方组件,而不是在代码里处理
  2. 文档里并没有说明这件事
  3. 数据库大小写无所谓(文档没说明),却在代码里有一个大小写不敏感的缓存

建议把这层转换在代码里做掉会好一些,否者稍不注意就会引起问题

@Anilople Anilople added the kind/report-problem Categorizes issue when someone report the problem he/she meeted label Dec 23, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/report-problem Categorizes issue when someone report the problem he/she meeted
Projects
None yet
Development

No branches or pull requests

4 participants