Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Ошибка сервера после удаления политики

Проблема

В Термит версии 2.4 при удалении политики, которая использовалась хотя бы в одном отчёте (на вкладке Моделирование), возникает ошибка сервера. При попытке открыть вкладку Моделирование отчёты не отображаются, а в логе контейнера termit-broker-client фиксируется следующая ошибка:

+

EntityNotFoundException: Unable to find ru.orionsoft.termit.broker.model.entity.policy.Policy with id ...

Решение

Для решения проблемы:

  1. Подключитесь к базе данных Postgres одним из двух способов:

    1. на хосте БД с помощью команды:

      psql -h localhost -U пользователь_бд -d имя_бд -W
    2. с другого хоста с помощью команды:

      psql -h имя_хоста_бд -p порт_бд -U пользователь_бд -d имя_бд
  2. Выполните SQL-скрипт:

    WITH deleted_settings AS (
        DELETE FROM effective_setting AS es
            USING policy AS p
            WHERE es.setting_policy_id = p.id
                AND p.deleted = true
            RETURNING es.effective_policy
    )
    DELETE FROM effective_policy AS ep
    WHERE ep.id IN (
        SELECT DISTINCT ds.effective_policy
        FROM deleted_settings AS ds
        WHERE ds.effective_policy IS NOT NULL
    );

    В результате все отчёты моделирования, содержащие удалённые политики, будут удалены.