Camunda External Task останавливается

Здравствуйте. Никто не встречал такое? External Task 7.16 работает в контейнере OpenShift работает, может месяц, может неделю. Потом раз и не работает. Поток TopicSubscriptionManager вроде бы есть, но linux показывает, что он sleep. Соответственно, там внутри крутится бесконечный цикл, который вычитывает с engine работу и исполняет ее. Так вот по логам получается, что он перестает работать. И все. Все процессы замирают. Не пойму, куда копать. помогите, пожалуйста.

Здравствуйте!

Каким образом реализовали External Task Client?

Здравствуйте. Немного не понял вопроса. Стартует спринг-бут приложение с зависимостью Exterrnal Task. У него настройки на ноду с Engine. При старте, стартует в потоке TopicSubscriptionManager - по сути дела обработчик. Как видно из логов, он запускает бесконечный цикл и в у меня в трейс логи падает что-то подобное несколько раз в секунду. Это означает, что он работает в штатном режиме и исполнение процессов идет нормально - воркер работает.
TASK/CLIENT-03008 Fetch and lock new external tasks for 82 topics

Проходит какое-то время - несколько дней, недель - нода не рестартуется, все работает.
Вдруг, ни ч того, ни с сего в логи перестает писаться это:
TASK/CLIENT-03008 Fetch and lock new external tasks for 82 topics
В логах плюс-минус ничего серьезного не происходит - нет ошибок, ничего. Просто в какое-то время последний вызов
TASK/CLIENT-03008 Fetch and lock new external tasks for 82 topics и тишина. Нода сама работает - рест контроллеры доступны и отвечают. Что-то происходит с потоком именно TopicSubscriptionManager.
Процессы все перестают исполняться.

Рестарт ноды решает проблему и так до следующего раза.

Зацепиться мне не за что пока. Понимаю, что это пальцем в небо, но может кто-то сталкивался.

У нас настроены автотесты и 4 раза в день как минимум одно и тоже прогоняется по стенду. Т.е. те же процессы, те же таски работают.

Может линукс что-то с потоком делает?

Или я не понимаю, как можно диагностировать, что происходит с потоком. top -H дает, что поток жив

В общем, я почти наверняка нашел причину по логам. Завтра узнаю точнее у разработчика, сейчас уже поздновато.

Еще хотел спросить - я не нашел, как можно сделать несколько потоков исполнения. А то получается, что сейчас исполняется только в одном потоке TopicSubscriptionManager - по сути последовательно и если что-то стопит его - какая-то таска, то и все останавливается.

Приветствую!

Спросил про особенности реализации, потому как на версии 7.16 были сообщения о проблемах с HTTP-клиентом External Task ( цикл external task повисал при connection timeout).

Т.е. нужно обновить платформу до более свежей? 7.20 например? А можно обновлять только ExternalTaskClient без обновления camunda engine? Те. энджин останется на 7.16, а экстерналтаск на 7.20? Или нужно все сразу поднять?

В общем, проблема примерно следующая. В таске отправляется сообщение через JMSTemplate.convertAndSend(queuee, () → {
})
Вот сюда примерно доходит и повисает. Как будто бы с блокировками связано. Лямбда MessagePostProcessor - не исполняется. Но это по логам происходит не всегда, т.е. число успешных отправок тоже есть.

1 лайк

В 7.20 более свежая версия Apache HTTP Components используется (в какой точно версии поменялась, сказать не могу, вижу по исходному коду на GitHub, что примерно 1-2 года назад).

Можно оставить engine на 16-й версии, обновить только External Task Client.

И самое главное забыл :smiley:
Что в настройках у клиента?
Установлены значения для async-response-timeout, disable-backoff-strategy, lock-duration ?

В 7.20 и более свежая версия спринга требуется судя по таблице. Но причину пробелем нашли.

async-response-timeout = 1000, disable-backoff-strategy=true, lock-duration не задан. По умолчанию.