Правила решения коллизий
Загрузка пакета выполняется после сохранения прикрепленного SOP–файла к записи импортируемого пакета. При загрузке конфигурационных пакетов выполняется проверка записей VCS из пакета на предмет коллизий с конфигурацией целевого экземпляра. После загрузки пакета необходимо проанализировать коллизии.
Коллизия – это логическое противоречие между текущим и импортируемым содержимым или свойствами конфигурационной записи.
Пример:
- Пользователь экспортировал локальный пакет с настройками бизнес-правила.
- Пользователь прикрепил пакет к записи импортированного пакета на другом экземпляре, где существует более новая версия этого бизнес-правила, т.е. она была обновлена позже, чем запись на исходном экземпляре.
- Пользователь получил сообщение о коллизии: на целевом экземпляре содержится более новая версия этой записи.
Информация о загрузке пакета содержится в связанном списке Журнал пр осмотра VCS на форме Импортированного пакета. Для каждой версии пакета отображается статус загрузки в соответствующем поле и информация о коллизии в поле Сообщение.
Возможные статусы загрузки:
Статус | Описание |
---|---|
Коллизия | Версия в этом статусе не может быть импортирована до тех пор, пока причины коллизии не будут устранены. |
Норма | Версия не вызывает коллизию. |
Пропущено | Версия в этом статусе будет проигнорирована в процессе установки пакета. Для импорта версии измените статус Пропущено на Норма. |
Предупреждение | Статус присваивается версиям, которые имеют незначительные проблемы, связанные с импортом. В зависимости от ошибки записи VCS будут либо перенесены на целевой экземпляр, либо пропущены. |
Для решения коллизий после загрузки пакета, выполните следующие шаги:
-
Откройте вкладку Журнал просмотра VCS в области Связанные списки на форме Импортированного пакета.
-
Отфильтруйте список, ис ключив все записи со статусом Норма.
-
Откройте первую запись. В поле Сообщение будет указана причина ошибки.
-
Откройте запись из связанного списка Извлеченные записи.
-
Внесите необходимые изменения в поле Копия записи (JSON).
примечаниеВ ряде случаев, когда решение коллизий требует большого количества изменений, рекомендуется производить повторную сборку локального пакета на исходном экземпляре. После выгрузки пакета замените пакет во вложениях к Импортированному пакету и нажмите кнопку Загрузить повторно.
-
Нажмите Сохранить и выйти.
-
Вернитесь в запись импортированного пакета и нажмите Подготовить к импорту.
-
Убедитесь, что статус записи в связанном списке Журнал просмотра VCS изменился на Норма.
-
Повторите шаги 3–8 до тех пор, пока все записи в списке Журнал просмотра VCS не перейдут в статус Норма или, при необходимости, Пропущено.
-
Нажмите кнопку Импортировать обновления.
Если запись вызывает несколько коллизий, в системе отобразится только первая. Исправьте ошибку и нажмите Подготовить к импорту, чтобы увидеть следующую коллизию, связанную с этой записью.
Возможные коллизии
Коллизия 1
В пакете содержится версия записи Х. Запись Х связана с другой записью Y, которой нет на экземпляре. Версия записи Y также отсутствует в импортируемом пакете. При загрузке записи VCS в Журнале просмотра VCS в поле Сообщение появится информация:
Reference {sys_id} in {column_name} does not exists in referenced table {reference_table_name}
Решение:
-
Добавьте версию записи Y в локальный пакет на исходном экземпляре.
ИЛИ
-
Оставьте запись в Журнале просмотра VCS в статусе Пропущено.
Коллизия 2
В пакете содержится версия на удаление записи Х. На экземпляре содержится запись, которая ссылается на запись X, или в пакете содержится версия записи, которая ссылается на запись Х. При загрузке записи VCS в Журнале просмотра VCS в поле Сообщение появится информация:
{column_name} column in {reference_table_name} table referenced on this record;
Решение:
Оставьте запись в Журнале просмотра VCS в статусе Пропущено.
Коллизия 3
Несовпадение набора колонок при импорте пакета.
Детали:
Таблица Запланированные скрипты на исходном экземпляре содержит N колонок. Таблица Запланированные скрипты на целевом экземпляре содержит N-1 колонок (см. схему ниже). При загрузке записи VCS в Журнале просмотра VCS в поле Сообщение появится информация:
Column "c_typical" related to "sys_schedule_script" does not exist.
Решение:
-
Продолжите импорт версии в статусе Предупреждение. В этом случае колонка c_typical не будет создана, а импортированная версия будет содержать N-1 пар ключ-значение в поле Копия записи (JSON).
ИЛИ
-
Импортируйте пакет с версией колонки c_typical на целевой экземпляр. Выполните повторную загрузку локального пакета.
ИЛИ
-
Если отсутствие определенной колонки ожидаемо:
- Откройте запись из Журнала просмотра VCS.
- Перейдите на форму записи в связанном списке Импортированные записи.
- Удалите из поля Копия записи (JSON) пару ключ-значение для колонки c_typical.
- Сохраните запись и нажмите Подготовить к импорту.
Коллизия 4
Запись VCS на целевом экземпляре более новая, чем запись VCS в пакете. Сравнение версий производится по дате и времени в значении ключа sys_updated_at в поле Копия записи (JSON). Записи VCS, для которых найдена более новая версия, будут находиться в статусе Пропущено. При загрузке записи VCS в Журнале просмотра VCS в поле Сообщение появится информация:
The system has a newer record
Решение:
-
Установите статус Норма для импорта версии из пакета.
ИЛИ
-
Оставьте запись в Журнале просмотра VCS в статусе Пропущено, чтобы сохранить записи на целевом экземпляре без изменений.
Коллизия 5
В пакете находится запись VCS на удаление таблицы. В таблице на целевом экземпляре содержатся записи. При загрузке записи VCS в Журнале просмотра VCS в поле Сообщение появится информация:
Table is not empty
Решение:
-
Установите статус Норма. В этом случае таблица и ее записи будут удалены.
ИЛИ
-
Оставьте запись в Журнале просмотра VCS в статусе Пропущено.