Запуск и остановка модулей графа репликации#
Пререквизиты#
технические пользователи созданы и прописаны в конфигурацию (данные для подключения к БД);
сетевые доступы консоль-воркер, воркер-БД, воркер-Kafka открыты;
пользователь авторизовался под ролью APPADMIN или APPDUTY.
Процесс#
Консоль управления получает запрос на запуск модуля
process.jsonиз UI консоли или через прямой вызов REST endpointPOST /process. При отсутствии доступных воркеров отправляет ответ на запросPOST /processс ошибкой создания процесса тому, от кого получила запрос.Консоль управления читает конфигурацию из БД по ID модуля, который пришел из запроса
POST /processи выполняет валидацию конфигурации перед стартом процесса.Консоль управления отправляет в воркер REST запрос
POST /startc JSON, описывающим конфигурацию запуска.Воркер получает рабочую конфигурацию (модуль) в запросе
POST /start.Воркер открывает соединения к описанным в конфигурации ресурсам (БД, Kafka) и пытается запустить процесс репликации.
При успешном запуске воркер возвращает код
204на запросPOST /start.Консоль отправляет событие об успешном старте процесса в запросе
POST /event.Статус воркера меняется на
ACTIVE.
Альтернативные сценарии#
При неудаче старта процесса воркер возвращает ошибку в консоль управления.
При наличии ошибки в воркере консоль управления отправляет ответ на запрос POST /process с ошибкой создания процесса тому, от кого получила запрос.
При наступлении событий воркер отправляет консоли управления уведомления через POST /event(при остановке и ошибках во время репликации).
В процессе работы отвечает на запросы консоли на GET /status с определенным интервалом (асинхронный процесс).
При ответе воркера на запрос
/startоб успешном запуске консоль управления помещает в таблицуgrdl_processновую запись.Консоль продолжает цикл опроса состояния воркеров и запущенных на них процессов, вызывая
GET /status.Консоль управления отправляет ответ на запрос
POST /processс ID запущенного процесса тому, откуда она получила этот запрос.При отсутствии успешного ответа от воркера на опрос статуса, консоль переводит его в статус
DETACHEDи продолжает его опрос на протяжении времени, равном worker_detached_timeout (стендовый параметр).Если до истечения worker_detached_timeout успешный вызов был получен, то воркер переводится в статус
READYилиACTIVEв зависимости от наличия запущенного процесса.Если успешного ответа получено не было, то воркер остается в статусе
DETACHED, а связанный с ним процесс завершается.Строки в таблице
grdl_workerне удаляются вне зависимости от статуса воркера.