当group 包含点"."时,在特定场景下会有问题:比如:分别创建如下配置:dataId : aaa.test_app.yml ; group : base_group;dataId : test_app.yml ; group : base_group.aaa;此时导入导出V1版本时,会导致无法精准定位到对应配置,造成 appName 字段错误。修复建议:group 添加校验,不能输入点"."。
cmssoen21#
我觉得修复方式可能有点问题,需要讨论下, 看下导入导出的时候为什么会定位错误。
yvt65v4c2#
场景只会再极端情况下出现,按照上方所述方式添加两个配置后,导出v1格式的meta 内容如下:
test_group.aaa.test_data~yml.app=test_group test_group.aaa.test_data~yml.app=testaaa
这样在导入的时候,定位就会出问题,最根本原因是因为V1格式的meta在拼接 data 与 group 生成的key 是用点拼接,而且这样一来,万一日后需要从meta 中正确拆分出group与data 也会有问题。加上实际场景中,group 基本不会遇到输入点的情况。
ktecyv1j3#
不能保证他人使用的时候没有输入点的情况,这里导出导入时是不是要将group的.和dataid的点一样,做转译处理?
vpfxa7rd4#
转译成 "~"可以,但是这样一来,是不是就相当于变相改了v1的meta格式了,之前代码只对dataId 的最后一个“点”做了处理,需考虑是否有其他地方使用当前格式。原代码如下:
String metaDataId = ci.getDataId(); if (metaDataId.contains(".")) { metaDataId = metaDataId.substring(0, metaDataId.lastIndexOf(".")) + "~" + metaDataId.substring( metaDataId.lastIndexOf(".") + 1); } metaData.append(ci.getGroup()).append('.').append(metaDataId).append(".app=") // Fixed use of "\r\n" here .append(ci.getAppName()).append("\r\n");
sbdsn5lh5#
如果将 group 和 dataId 中的点 全部转译成 "~" 方案可行的话,我把代码改完再提交一下
mcdcgff06#
提交pr前还是再讨论一下吧,先讨论方案是否有问题,以免做无用修改。
5cnsuln77#
修复该问题,主要是为了实现这个功能, #5797目前在解耦 config 时,发现了这些问题,虽然影响不大,但是感觉还是解决一下比较好。另外针对上面那个 issues ,目前代码已实现了大部分功能,这个功能不算小,如何讨论一下。以下是针对该issues 写的一个临时博客,期待探讨。https://www.cnblogs.com/moonciki/articles/16566937.html
unguejic8#
修复该问题,主要是为了实现这个功能, #5797 目前在解耦 config 时,发现了这些问题,虽然影响不大,但是感觉还是解决一下比较好。 另外针对上面那个 issues ,目前代码已实现了大部分功能,这个功能不算小,如何讨论一下。 以下是针对该issues 写的一个临时博客,期待探讨。 https://www.cnblogs.com/moonciki/articles/16566937.html
解耦config模块和persistence模块是一个比较大的改动,可以单独为这个内容提一个提案,可以单独再提一个新的issue,并且把提案详细的写在issue里。
8条答案
按热度按时间cmssoen21#
我觉得修复方式可能有点问题,需要讨论下, 看下导入导出的时候为什么会定位错误。
yvt65v4c2#
场景只会再极端情况下出现,按照上方所述方式添加两个配置后,导出v1格式的meta 内容如下:
这样在导入的时候,定位就会出问题,最根本原因是因为V1格式的meta在拼接 data 与 group 生成的key 是用点拼接,而且这样一来,万一日后需要从meta 中正确拆分出group与data 也会有问题。
加上实际场景中,group 基本不会遇到输入点的情况。
ktecyv1j3#
不能保证他人使用的时候没有输入点的情况,这里导出导入时是不是要将group的.和dataid的点一样,做转译处理?
vpfxa7rd4#
转译成 "~"可以,但是这样一来,是不是就相当于变相改了v1的meta格式了,
之前代码只对dataId 的最后一个“点”做了处理,需考虑是否有其他地方使用当前格式。
原代码如下:
sbdsn5lh5#
如果将 group 和 dataId 中的点 全部转译成 "~" 方案可行的话,我把代码改完再提交一下
mcdcgff06#
提交pr前还是再讨论一下吧,先讨论方案是否有问题,以免做无用修改。
5cnsuln77#
修复该问题,主要是为了实现这个功能, #5797
目前在解耦 config 时,发现了这些问题,虽然影响不大,但是感觉还是解决一下比较好。
另外针对上面那个 issues ,目前代码已实现了大部分功能,这个功能不算小,如何讨论一下。
以下是针对该issues 写的一个临时博客,期待探讨。
https://www.cnblogs.com/moonciki/articles/16566937.html
unguejic8#
修复该问题,主要是为了实现这个功能, #5797 目前在解耦 config 时,发现了这些问题,虽然影响不大,但是感觉还是解决一下比较好。 另外针对上面那个 issues ,目前代码已实现了大部分功能,这个功能不算小,如何讨论一下。 以下是针对该issues 写的一个临时博客,期待探讨。 https://www.cnblogs.com/moonciki/articles/16566937.html
解耦config模块和persistence模块是一个比较大的改动,可以单独为这个内容提一个提案,可以单独再提一个新的issue,并且把提案详细的写在issue里。