Page 1 of 1

Один словарь отображается два раза

PostPosted: Thu Jan 26, 2012 2:14 pm
by Novikov
Иногда получается так, что один словарь отображается два раза, при этом, как видим, путь один и тот же:

Image
Image

Фактически подключено два словаря, но отображается три (один дублируется). В папке index при этом показывается файлы, как и положено, для двух словарей, а вот в конфиге дублированный словарь присутствует дважды:

Code: Select all
  <dictionary name="test">31cbef73499cf36befb0833ddb05712b</dictionary>
  <dictionary name="test">e94f44033f9e1a2ad381a84525a266f5</dictionary>


Если удалить папку, пересканировать, выйти из GD, снова зайти, добавить папку, то чудесным образом словарь снова предстает в двух экземплярах. Экземпляры идентичны, при внесении изменений в файл словаря эти изменения актуальны для обеих копий. Process Monitor при этом показывает, что ни к каким другим файлам с таким же именем, например, в виртуальных директориях, GD не обращается.

При удалении файла словаря приведенный выше код не меняется, остается там, где и был.

Если удалить вышеприведенный код из конфига -- программа начинает видеть один словарь. При этом в конфиге строчки вида
Code: Select all
<dictionary name="test">31cbef73499cf36befb0833ddb05712b</dictionary>
при пересканировании больше не появляются, даже если убрать папку и снова ее потом добавить. Чтобы вернуть в конфиг такую строчку, надо поменять порядок словарей.

Как появляется дубликат -- точно не скажу. В ходе тестирования много раз сохраняю и пересохраняю файлы, GD при этом открыт, отловил случайно, но баг повторяется. Точный способ воспроизведения пока не приведу, но зато механизм появления описал.

Такое поведение наблюдается у последней стабильной и последней early access версий (а еще номера версий не скопировать никак, ну сделайте же инструмент для отчетов тестера, чтобы эту инфу одним кликом копировать).

Re: Один словарь отображается два раза

PostPosted: Thu Jan 26, 2012 2:34 pm
by Novikov
Нашел, как минимум, один способ воспроизведения бага.

1. Допустим, есть две папки, в которых лежат словари с одинаковыми именами в теге #NAME.

2. При сканировании папок и индексации в списке появляются два словаря с одинаковым именем. В конфиге, соответственно, две записи вида
Code: Select all
<dictionary name="test">31cbef73499cf36befb0833ddb05712b</dictionary>


3. После удаления одного из словарей дублирующая запись из конфига не пропадает, и словарь получает "вечного" двойника, две кнопочки и по два раза отображается в результатах.

Примечание: если один из словарей был добавлен раньше, дубль не появляется, пока мы не попробуем поменять порядок словарей.

Примечание 2: если один из словарей был добавлен раньше, а мы затем пересканируем, при этом добавляется несколько новых словарей, среди которых дубль -- соответствующая секция конфига также не обновляется.