Skip to content

Release 0.17 notes

ENVIRONMENT VARIABLES

Deprecated

USE_NEW_ENTITY_LINK_REPO DB__URL DB__CONN_OPTIONS DB__STAGE_SCHEMA DB__STORE_SCHEMA DB__WORK_SCHEMA

NEW

  • USE_NEW_V100_REPO - выполнять работу с объектами v2, используя целевую архитектуру метаданных v100 (default = True). В 0.17 применимо только к загрузчикам. Если True, то данные v2 сохраняются как в целевой, так и в легаси архитектуре, при этом чтение происходит только из целевых таблиц metastore. Если False, то используются метаданные только из легаси архитектуры.
  • APP__MAX_ITEMS_LIMIT - максимальное количество элементов в ответе пагинированного эндпоинта.
  • S3 - Добавлена возможность авторизации в S3 хранилище с помощью openid токена (keycloak).
    • S3__AUTH_TYPE = openid: включить авторизацию через openid токен (default = access_key). В режиме авторизации через openid параметры S3__ACCESS_KEY и S3__SECRET_ACCESS_KEY не используются.
    • S3__SESSION_TOKEN_LIFETIME = 3600: время жизни S3 токена в секундах. Диапазон допустимых значений 900 - 604800 (default = 3600)
  • SWAGGER - настройки для swagger
    • SWAGGER__USE_BUNDLED = true - Использовать встроенную версию .js и .css ресурсов для сваггера
    • SWAGGER__TOKEN_URL = null - кастомный адрес, по которому получать токен
  • APP__DEFAULT_SOURCE_RK = -1 - суррогатный ключ источника по умолчанию для запуска заданий

Изменение формата ответа /health

Изменяется схема отчета о состоянии системы.

Вместо datastore добавляется секция sources с отчетом по подключению к каждому источнику данных из справочника meta.v100_sources.

Изменение подключения к датасторам

Настройка подключений к датасторам теперь осуществляется через таблицу meta.v100_source.

!NB Источник source_rk = -1 (дефолтный датастор) удалять нельзя, т.к. API V2 и узлы constructor продолжают работать только с ним.

Загрузчики из внешних датасторов

Загрузчики из SQL/таблиц теперь работают только с источником source_rk = -1. Другие источники не могут использоваться для загрузки данных, репликация данных между источниками больше не производится.

Миграция загрузчиков

Загрузчики мигрируют в целевую архитектуру метаданных v100. Важные изменения после миграции:

  • Статус загрузчика берется только из задания загрузки (джоба). При удалении связанного джоба, статус загрузчика будет пустым.
  • В новой архитектуре снова начинают работать sql-загрузчики, но теперь скрипт должен состоять только из одной инструкции select без использования CTE.

Для обеспечения возможности "отката" к легаси архитектуре, в релизе предусмотрена переменная USE_NEW_V100_REPO (бывш. USE_NEW_ENTITY_LINK_REPO).

Переименование загрузчиков

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

Проверить наличие таких загрузчиков можно с помощью запроса:

select * from meta.loader l
where l.type != 'entity_link' and l.name in (
    select name from meta.entity_link
)

Такие загрузчики лучше переименовать до установки релиза.

Активация / деактивация загрузчиков

Из API v2 удаляется функциональность активации/деактивации вместе с эндпоинтами:

  • POST /loader/activate
  • POST /loader/deactivate

Все ранее деактивированные загрузчики принудительно активируются при установке релиза. Если при принудительной активации обнаруживается версия переменной с неуникальным именем, то такой версии переменной присваивается случайное сгенерированное имя.

Проверить наличие таких версий переменных можно с помощью запроса:

select distinct fc.*
from meta.loader l
inner join meta.loader_feature_map lfm on lfm.loader_rk = l.loader_rk
inner join meta.feature_column fc on fc.column_rk = lfm.column_rk
inner join meta.feature_column fc_dupl on (
    fc_dupl.feature_rk = fc.feature_rk
    and fc_dupl.name = fc.name
    and fc_dupl.column_rk != fc.column_rk
)
where l.active_flg = false

Отобрать деактивированные загрузчики можно с помощью запроса:

select * from meta.loader
where active_flg = false

Такие загрузчики лучше удалить или активировать до установки релиза.

Переход на SQLAlchemy 2.0

Строка подключения к БД meta не должна содержать явного указания драйвера: postresql://...

После перехода на второе поколение библиотеки SQLAlchemy для коннекта к БД meta используется асинхронный драйвер postgresql - asyncpg. Если в строке подключения к БД будет указан другой драйвер (например postgresql+psycopg2://), то приложение сообщит об этом и упадет. При этом для миграций alembic по прежнему используется драйвер psycopg2 и приложения самостоятельно принимает решение, какой драйвер надо использовать в зависимости от контекста.

Изменение формата расписания в API V2

Для методов POST /loader/create, PATCH /loader/{loader_rk}, GET /loader/{loader_rk} меняется формат поля SCHEDULE для request/response body: вместо схемы расписание теперь задается в формате пятизначной крон-строки.

Удаление набора эндпоинтов датасета API V2

Следующие эндпоинты были удалены:

  • POST /dataset
  • PUT /dataset/{dataset_rk}
  • POST /dataset/{dataset_rk}/split
  • GET /dataset/history/{dataset_rk}
  • GET /dataset/{dataset_rk}/execution
  • POST /dataset/impute
  • POST /dataset/validate

Функционал метода POST /dataset/impute перенесен в API V100 и реализован как узел fat_impute.

Изменение эндпоинта DELETE DATASET API V2

Из схемы reqeust body удален аргумент DELETE_FLG. Теперь эндпоинт удаляет датасет как в метаданных, так и физическую таблицу в datastore (с учетом force_flg).

Интеграция с сервисом генерации Excel каталога

В WEB-интерфейсе реализована поддержка интеграции с сервисом генерации каталога в формате Excel. Для этого необходимо указать адрес сервиса в переменную INFOMAP_GENERATOR_API в values.yaml веб-интерфейса.