Особенности обновления с версии 1.18.1 на версию 1.19.0

При обновлении с версии 1.18.1 на версию 1.19.0 выполните дополнительные действия и настройки, описанные в разделах ниже.

Ошибка «Недостаточно прав для просмотра этого раздела» при попытке доступа к разделу в пользовательском интерфейсе «Кабинет администратора» (сбой валидации Liquibase)

После обновления компонентов продукта может возникать ошибка «Недостаточно прав для просмотра этого раздела», которая не связана с настройками пользовательских прав, а указывает на сбой в процессе валидации миграций базы данных.

Контекст и причина возникновения

Ошибка возникает только после обновления на версию 1.19.0 при попытке доступа к любому разделу пользовательского интерфейса «Кабинет администратора».

При этом в логах сервиса osmax-core присутствует сообщение вида:

Caused by: liquibase.exception.ValidationFailedException: Validation Failed:
     <XX> changesets checksum
db/.../filename.yml::...
db/.../filename.yml::...
db/.../filename.yml::...

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

При этом в интерфейсе «Кабинет администратора» отображается ошибка «Недостаточно прав для просмотра этого раздела» — это следствие, а не причина.

Инструкция по восстановлению работоспособности

Для восстановления работоспособности сервиса osmax-core:

  1. Проверьте лог на наличие ошибок валидации:

    cat /var/log/osmax/core/osmax-core.log | grep "Validation Failed"

    В выводе найдите строки с changesets checksum и зафиксируйте имена файлов.

    Очистку md5sum необходимо выполнять только для файлов, указанных в логе. Список в инструкции ниже приводится исключительно для примера. Используйте только те файлы, записи о которых фактически содержатся в логе сервиса osmax-core.
  2. Остановите сервис osmax-core:

    systemctl stop osmax-core

    Убедитесь, что сервис остановлен и находится в статусе inactive (dead):

    systemctl status osmax-core
  3. Выполните необходимые действия по созданию резервных копий (например, сохраните текущий лог, создайте дамп таблицы databasechangelog).

  4. Сбросьте md5sum только для файлов, указанных в логе.
    Для этого выполните для файлов, найденных на шаге 1, запрос вида:

    UPDATE osmax_schema.databasechangelog
    SET md5sum = NULL
    WHERE filename IN (
        'db/.../filename.yml',
        'db/.../filename.yml'
    );

    Пример запроса:

    UPDATE osmax_schema.databasechangelog
    SET md5sum = NULL
    WHERE filename IN (
        'db/1.5.0/2024-02-22--04-app_config.change_default_schedules_config.yml',
        'db/1.5.0/2024-03-15--10-insert.user_session_history_schedule.yml',
        'db/1.6.0/2024-05-06--16-insert.install_agent_task_settings.yml',
        'db/1.7.0/2024-06-18--08-insert.ldap_attr_settings.yml',
        'db/1.8.0/2024-07-01--01-insert.software_inventory_sync_schedule.yml',
        'db/1.9.0/2024-07-11--01-insert.inventory.collection_configuration.yml',
        'db/1.9.0/2024-07-10--03-insert.app_config.ldap_sync_delta_schedule.yml',
        'db/1.9.0/2024-07-10--04-insert.app_config.ldap_sync_schedule.yml',
        'db/1.14.0/2025-01-08--05-insert.app_config.access_zones_defaults.yml',
        'db/1.15.0/2025-05-15--01-insert.app_config.access_zones_refresh_schedule.yml',
        'db/1.16.0/2025-06-05--01-insert.app_config.new_format_uninstalled_config_metrics_param.yml',
        'db/1.16.0/2025-06-04--01-insert.app_config.osmax.metrics.calculation.cron.yml',
        'db/1.16.0/2025-06-18--01-insert.app_config.osmax.inventory.software.sync_cache_data.yml',
        'db/1.16.0/2025-07-24--01-insert.app_config.result_expiration_interval.yml',
        'db/1.17.0/2025-09-18--01-insert.app_config.linked-devices-flag.yml',
        'db/1.18.0/2025-12-04--01-insert.app_config.result_expiration_interval_for_files.yml'
    );
    Пример выше — только иллюстрация. Замените имена файлов на те, что содержатся в логе. Не копируйте список из этой инструкции, так как он может не совпадать с вашей версией или окружением.
  5. Запустите сервис osmax-core:

    systemctl start osmax-core

    Убедитесь, что сервис запущен и находится в статусе active (running):

    systemctl status osmax-core
  6. Проверьте лог на наличие ошибок валидации:

    cat /var/log/osmax/core/osmax-core.log | grep "Validation Failed"
  7. Проверьте доступность разделов в пользовательском интерфейсе «Кабинет администратора».