Откат Hystrix выполнен, хотя run() был успешным

Я использую Hystrix через Tenacity, модуль dropwizard для hystrix https://github.com/yammer/tenacity, и я заметил, что fallback() называется даже если run() метод успешно работает.

Вот как я это называю

TenacityCommand.<Long>builder(MyDeps.DATABASE)
        .run(() -> insertIntoDB(event))
        .fallback(() -> alert(event))
        .execute();

Моя команда запуска просто выполняет вызов JDBI для вставки события в БД. Тем не менее, я замечаю, что приходят оповещения, но не вижу никаких исключений в журналах, а также вижу событие в базе данных?

Отсутствие каких-либо исключений в журнале при вставке в БД заставляет меня думать, что это вызвано тем, что все потоки для этой зависимости используются во время вызова команды. У меня есть 10 потоков в пуле для этой зависимости. Возможно ли, что все потоки заняты, поэтому откат выполнен и команда поставлена ​​в очередь. Тогда когда поток доступен, метод run выполняется? Из документации это не должно быть так: https://github.com/Netflix/Hystrix/wiki/How-it-Works

Я также считаю, что это происходит потому, что, глядя на последовательность событий, событие вставляется в базу данных немного позже, чем ожидалось, по сравнению с другими событиями, которые происходят без выполнения отката.

0 ответов

Другие вопросы по тегам