Тайм-аут сообщения шторма работает неправильно - PullRequest
1 голос
/ 15 мая 2019

Я обнаружил следующее, когда использовал режим отладки.Для TOPOLOGY_MESSAGE_TIMEOUT_SECS установлено значение 90 с.Spout не должен получать более 90 секунд от отправки до получения сообщения об ошибке, но почему в журнале 135 секунд?

2019-05-14 16:53:12.037 o.a.s.s.CheckpointSpout Thread-13-$checkpointspout-executor[1 1] [DEBUG] Current state CheckPointState{txid=7, state=COMMITTING}, emitting txid 7, action COMMIT
2019-05-14 16:55:27.097 o.a.s.s.CheckpointSpout Thread-13-$checkpointspout-executor[1 1] [DEBUG] Got fail with msgid 7
2019-05-14 16:55:27.097 o.a.s.s.CheckpointSpout Thread-13-$checkpointspout-executor[1 1] [DEBUG] Checkpoint failed, will trigger recovery

1 Ответ

1 голос
/ 15 мая 2019

Время ожидания сообщения не является жестким ограничением.Сообщения могут занять в 2 раза больше времени ожидания, чем время ожидания.Это связано с оптимизацией производительности, когда вместо тайм-аутов каждую секунду у нас есть два сегмента.Когда кортеж создается, он помещается в сегмент 1. По истечении времени ожидания мы поворачиваем все наборы 1-го сегмента в сегмент 2 и завершаем работу всех наборов 2-го сегмента.Это позволяет нам гарантировать, что кортеж получит хотя бы полный тайм-аут сообщения, а также будет дешев в вычислениях.

...