apollo
apollo copied to clipboard
使用 properties 文本编辑出现lineNum序号重复的问题
首先我无法复现这个问题,因为我这应该是一个连续性步骤导致的问题。 用户使用的表象是 点击文本---》编辑配置---》全选粘贴新的配置---》保存修改---》 再点击文本---》配置行中穿插着一些空白行,或者 #||! 的注释行。虽然没遇到但我觉得还有可能会穿插真正有效的配置项。 之后用户重复上述步骤,或者针对的删除这些空白行或无用注释,却始终删不掉。 然后发现配置注释空白仅粘贴100行,文本行序号却有144行的”怪“现象
经过排查,多出的这些行的lineNum序号是重复的还有一些是LineNum序号太大,在 com.ctrip.framework.apollo.portal.component.txtresolver.resolve 方法中使用 LineNum 分组的是 HashMap ,Key 无法重复。所以始终无法删除多出的相同lineNum列,且在order 排序下相同的 lineNum 顺序随机可能会出现一些非常恐怖的问题。还注意到同类下 deleteCommentAndBlankItem 方法无法删除 旧数据为”“,新数据为 null 下的旧数据列。导致如果上一个配置有250列,后面50列都是”“,按如上用户步骤即使没有重复数据穿插进来,用户数据未覆盖到250列,用户始终会感觉后面有一片空白区,我粘贴一点,空白区就后退一点,我删掉一点,空白区也不见得少一点。和狗皮膏药一样。
我无法复现怎样的操作会增加两条相同的lineNum序号的数据列。所以希望大佬们能看下这个问题。 解决办法 1:增加旧数据为”“,新数据为 null 下的旧数据列删除逻辑 2:让用户操作变成点击文本---》编辑配置---》删除配置--》保存配置--》编辑配置---》全选粘贴新的配置---》保存修改---》可以解决,这样第二次判断时就能搜出第二个key比较执行逻辑