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