Носик не знает, какой болт вызвал сбой кортежа, поэтому в трассировке стека ничего не видно.
Я буду использовать код 1.2.2 для ответа. Вероятно, вы можете сделать то же самое в 0.10.0, но эта версия древняя, и я не хочу копаться в ней.
Один из способов отладки - включить ведение журнала отладки в Storm при отправке топологии.
Config config = new Config();
config.setDebug(true);
//submit your topology using this Config
При сбое в кортеже вы получите журнал типа
2019-06-29 12: 16: 09.552 oasdexecutor Thread-11-word-executor [16 16] [INFO] SPOUT Сбой 32496024444700129: {: stream "default",: values [84 1561716922356 116]} ПРИЧИНА: TIMEOUT MSG-ID: 116
После этого вы можете выяснить, какой болт не атаковал кортеж. Если вы ищете в своем журнале идентификатор кортежа (здесь это значение 32496024444700129
), вы увидите журналы для каждого переноса на болт этого кортежа, например,
2019-06-29 12: 15: 22.356 oasdexecutor Thread-11-word-executor [16 16] [INFO] Передача кортежа [dest: 4 кортеж: источник: слово: 16, поток: по умолчанию, id: { 32496024444700129 = 5923978744049352856}, [84, 1561716922356, 116]]
Это говорит мне о том, что кортеж был перенесен в задачу 4. Когда началась топология, он записал, какой болт был задачей 4, вы также можете увидеть это в пользовательском интерфейсе Storm.
2019-06-29 12: 15: 08.801 o.a.s.d.executor main [INFO] Загрузка исполнителя восклицает1: [4 4]
Я вижу, что задание 4 вызвало кортеж, так что это не причина истечения времени ожидания кортежа
2019-06-29 12: 15: 22.359 o.a.s.d.task Thread-17-exclaim1-executor [4 4] [INFO] Излучение: exclaim1 __ack_ack [32496024444700129 7387867738466240036]
Я также вижу, что задача 4 перенесла кортеж в задачу 8
2019-06-29 12: 15: 22.359 oasdexecutor Thread-17-exclaim1-executor [4 4] [INFO] ПЕРЕДАЧА кортежа [dest: 8 tuple: source: exclaim1: 4, поток: default, id: { 32496024444700129 = 3796756412183316156}, [84 !!!]]
и эта задача 8 обработала его
2019-06-29 12: 15: 22.363 oasdexecutor Thread-5-exclaim2-executor [8 8] [INFO] Обработка полученного сообщения FOR 8 TUPLE: источник: exclaim1: 4, поток: по умолчанию, id: {32496024444700129 = 3796756412183316156}, [84 !!!]
Нет лога, что задача 8 проверила этот кортеж, так что задача 8 - это болт, который не получил правильное подтверждение.
Я смотрю задачу 8 в журнале и получаю
2019-06-29 12: 15: 08.446 o.a.s.d.executor main [INFO] Загруженные задачи исполнителя exclaim2: [8 8]
Так что "exclaim2" - это болт в моей топологии, который не проверяется правильно.