Skip to content

Исправить разбор режима совместимости НеИспользовать / DontUse в проверке версии платформы#1165

Open
steel-code-agent wants to merge 4 commits intovanessa-opensource:developfrom
steel-code-agent:fix-compatibility-mode-dontuse

Conversation

@steel-code-agent
Copy link
Copy Markdown

PR: Исправить разбор режима совместимости НеИспользовать / DontUse

Кратко

Этот PR исправляет падение bddRunner при проверке совместимости плагинов, когда режим совместимости метаданных равен НеИспользовать / DontUse.

Сейчас это значение может попасть в логику сравнения версий как обычная строка версии, после чего возникает ошибка:

Преобразование значения к типу Число не может быть выполнено

В результате bddRunner не может загрузить часть плагинов и сценарий не стартует.

Проблема

bddRunner использует функции ПодходящийРежимСовместимостиПлатформы(...) и связанные с ними проверки, чтобы понять, можно ли запускать плагин на текущей платформе.

В проблемном окружении режим совместимости возвращается не как версия, а как строковый маркер:

  • НеИспользовать
  • DontUse

Далее это значение попадает в сравнение версий:

Если Число(Элем2) > Число(Элем1) Тогда

Если один из элементов равен НеИспользовать / DontUse, преобразование в Число(...) падает.

Как воспроизводится

Окружение, на котором ошибка стабильно воспроизводится:

  • Linux thin client
  • платформа 8.3.27.1719
  • запуск Vanessa Automation через bddRunner

Фактическая ошибка при загрузке плагина:

Возникла ошибка при загрузке плагина: /opt/onescript/2.0.0/lib/add/plugins/ЗагрузчикРасширения.epf
Преобразование значения к типу Число не может быть выполнено
{ExternalDataProcessor.bddRunner.ObjectModule(2253)}:Если Число(Элем2) > Число(Элем1) Тогда
{ExternalDataProcessor.bddRunner.ObjectModule(2272)}:Возврат ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(ВерсияРежимаСовместимости, НеобходимаяВерсияПриложения);
{ExternalDataProcessor.ЗагрузчикРасширения.ObjectModule(137)}:Если Не КонтекстЯдра.ПодходящийРежимСовместимостиПлатформы("8.3.13") Тогда

Причина

РежимСовместимости(...) в платформе может легально возвращать не строку вида 8.3.13, а специальное значение, означающее, что режим совместимости не используется.

Это значение не является числовой версией и не должно напрямую участвовать в сравнении версий.

Что меняется

Перед сравнением версий нормализуется результат РежимСовместимости(...):

  • если строка пустая;
  • или содержит НеИспольз;
  • или содержит DontUse;

тогда вместо неё используется:

  • СистемнаяИнформация.ВерсияПриложения

Дополнительно сохраняется fallback на версию приложения, если после нормализации не получилась валидная строка версии.

Какие файлы нужно менять

Серверная часть:

  • bddRunner/Ext/ObjectModule.bsl

Клиентская часть с зеркальной логикой:

  • bddRunner/Forms/УправляемаяФорма/Ext/Form/Module.bsl

Почему правка нужна в двух местах

Логика проверки режима совместимости дублируется:

  • в модуле объекта;
  • в модуле управляемой формы.

Если исправить только одну сторону, другая всё равно может упасть на том же значении НеИспользовать / DontUse, в зависимости от того, где именно выполняется проверка совместимости.

Поведение до и после

До исправления:

  • загрузка плагинов может завершиться аварийно;
  • bddRunner падает ещё до нормального старта сценариев.

После исправления:

  • НеИспользовать / DontUse трактуется как “использовать текущую версию платформы”;
  • сравнение версий работает корректно;
  • плагины загружаются штатно.

Проверка

Проверено в текущем контейнере проекта:

  • штатный bddRunner.epf падает с описанной ошибкой;
  • сборка с исправлением проходит запуск нормально;
  • после исправления успешно выполняются сценарии с va-status.json = 0:
    • tests/vanessa/features/smoke/vanessa_selftest_smoke.feature
    • tests/vanessa/features/smoke/testclient_connection_smoke.feature
    • tests/vanessa/features/stories/quote_discount_agreement_marks_line.feature

Что не нужно включать в PR

В PR стоит включать только сам functional fix по нормализации режима совместимости.

Не нужно включать:

  • временный диагностический лог;
  • дополнительные локальные трассировки старта;
  • прочие изменения, которые использовались только во время расследования.

Предлагаемый заголовок PR

Исправить разбор режима совместимости НеИспользовать / DontUse в проверке версии платформы

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant