Налаштування таймауту для BPMS та Rest API

1. Опис проблеми

При виконанні задачі зі збереженням сутності у БД, якщо Kafka не встигала обробити запит протягом 30 секунд, REST API отримував таймаут-помилку. Через невизначеність результатів запита, існувала ймовірність дублювання сутностей у БД. Для поліпшення досвіду розробки ми додали можливість налаштувати значення таймауту для bpms та rest-api.

2. Інструкція з налаштування таймауту

Для налаштування таймауту виконайте наведені нижче кроки.

2.1. Кроки для налаштування

Перевизначите параметри таймаута у файлі конфігурації реєстру:

  1. Відкрийте файл deploy-templates/values.gotmpl у репозиторії реєстру.

  2. Додайте наступні блоки налаштувань у секції .global.registry:

    bpms:
      springOpenfeign:
        defaultReadTimeout: 70000  # 70 секунд
        defaultConnectTimeout: 20000  # 20 секунд
    restApi:
      kafka:
        timeoutInSeconds: 40  # 40 секунд

    set timeout bpms restapi 01

2.2. Пояснення параметрів

Для сервісу bpms:
  • readTimeout — час очікування читання даних. За замовчуванням: 60000 (60 секунд). Перевизначається за шляхом .global.registry.bpms.springOpenfeign.defaultReadTimeout.

  • connectionTimeout — час очікування підтвердження з’єднання. За замовчуванням: 10000 (10 секунд). Перевизначається за шляхом .global.registry.bpms.springOpenfeign.defaultConnectTimeout.

Для сервісу rest-api:
  • request-reply.timeout-in-seconds — час очікування відповіді від kafka-api. За замовчуванням: 30 секунд. Перевизначається за шляхом .global.registry.restApi.kafka.timeoutInSeconds.

2.3. Застосування змін

  1. Оновлення конфігурації реєстру.

    1. Виконайте коміт змін у файлі values.gotmpl до Gerrit-репозиторію.

    2. Дочекайтеся завершення пайплайну MASTER-Build для застосування нової конфігурації реєстру.

  2. Оновлення налаштувань регламенту реєстру.

    Запустіть збірку моделі даних регламенту — MASTER-Build-registry-regulations/data-model через стандартний процес внесення змін:

    1. Виконайте коміт змін до моделі даних (data-model) Gerrit-репозиторію.

    2. Дочекайтеся автоматичної збірки сервісом Jenkins.

  3. Рестарт поду bpms.

    1. Відкрийте Вебінтерфейс управління кластером OpenShift (Console).

    2. Перейдіть до меню Workloads  Pods.

    3. Знайдіть под bpms та у контекстному меню натисніть кнопку Delete Pod, щоб видалити под.

    4. Kubernetes автоматично створить новий под з оновленою конфігурацією.

2.4. Результат

Після виконання цих кроків:

  • Таймаут очікування для bpms та rest-api налаштовано відповідно до нових значень.

  • Kafka має більше часу для успішної обробки запитів.