apolloconfig / apolloconfig/apollo

使用 properties 文本编辑出现lineNum序号重复的问题

Abierto
#4,162 0 comentarios 1 reacción 0 asignados Ver en GitHub
need investigation
Lenguaje dominante
Java
Estrellas
29.8k
Forks
10.2k
Merge medio
4 d 7 h
PR fusionados (30 d)
4

Descripción

首先我无法复现这个问题,因为我这应该是一个连续性步骤导致的问题。
用户使用的表象是
点击文本---》编辑配置---》全选粘贴新的配置---》保存修改---》
再点击文本---》配置行中穿插着一些空白行,或者 #||! 的注释行。虽然没遇到但我觉得还有可能会穿插真正有效的配置项。
之后用户重复上述步骤,或者针对的删除这些空白行或无用注释,却始终删不掉。
然后发现配置注释空白仅粘贴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比较执行逻辑

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.