Skip to main content

Управление процессами загрузки коннекторов (мониторинг статусов, отстановка, удаление)

Техническое описание

1. Мониторинг статусов

Клиентская часть оценивает состояние коннектора (в том числе загрузки) с помощью запроса, а также по сокет соединению, которое инициируется в момент навигации на страницу проекта:
GET https://fastbord-back-dev4.fb-dev.winsolutions.ru/api/v1/sources/list/{projectId},  где projectId – id проекта, для которого запрашиваются источники.

Результат содержит массив из объектов описывающих каждый коннектор, подключенный к выбранному проекту (подробное описание см. раздел "Получение списка и состояний подключений").
В объекте находится вся полезная информация для обновления пользовательского интерфейса и отслеживания статуса загрузки коннектор

{
    "id": "a9db47c9-a1f9-4637-895f-b2f175a2c80a",
    "isValid": true,
    "createdAt": "2023-11-22T13:02:12.594Z",
    "updatedAt": "2023-11-22T13:02:12.594Z",
    "name": "QVDNEW",
    "driver": "qvd",
    "type": "file",
    "filePath": "/qvd/df0b5654-d967-40d0-bcfc-ce39055001c0.qvd",
    "fileName": "df0b5654-d967-40d0-bcfc-ce39055001c0.qvd",
    "selected": false,
    "lastLoading": {
        "id": "2116fef9-07b6-4f4a-8af6-60e90fc11351",
        "projectId": null,
        "sourceId": "a9db47c9-a1f9-4637-895f-b2f175a2c80a",
        "status": "success",
        "started": "2023-11-22T13:02:12.613Z",
        "loaded": 10103,
        "progress": 100
    }
}


В частности поле lastLoading - описывает последнюю попытку использования коннектора для импорта данных в проект.
С помощью его содержимого выполняется мониторинг статусов импорта данных в проект, касающийся данного коннектора.
Например:

  • progress - процент выполнения загрузки источника в проект
  • loaded - определяет количество записей (строк) успешно импортированных в проект
  • status - статус последнего процесса импорта из источника

Информация о статусе импорта данных из источника также динамически поступает через сокет соединение, которое ожидает сообщений от канала брокера (rabbitMQ). Микросервис загрузки файловых источников отслеживает статус импорта данных из источника и через брокер (rabbitMQ) и затем сокет соединение оповещает клиентов об изменении в статуса импорта

2. Остановка импорта, удаление источника из проекта

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

Удаление источника из проекта инициируется на клиентской части:

image.png

Post запрос, https://fastbord-back-dev4.fb-dev.winsolutions.ru/api/v1/sources/delete

Тело запроса:

{
    "id": "863f0581-5344-4bee-a264-92d03ea8bef3"
}

где, id - идентификатор источника, который необходимо удалить

Результат:
Если нет доступа к источнику (роль не администратор или не владелец источник) возвращается ошибка 403 "У вас нет прав управлять данным источником"

Если источник не найден, возвращается ошибка 404 'Источник не найден'

В случае успешного удаления источника возвращается статус 200 с сообщением "Ok"

image.png

На стороне Nest.js происходит удаление базы данных clickhouse, ассоциированной с указанным в запросе источником, а также обновляется метка источника "deletedAt" в базе данных postgres, которая отражается успешный результат удаления