Я пытаюсь отладить поток akka, который в одной ситуации правильно извлекает новые данные, но в другой ситуации «застревает» и не извлекает новые данные. Все это полностью воспроизводимо, но вторая ситуация довольно сложна и требует нескольких минут настройки, чтобы начать работу. Дело в том, что этот поток Akka фактически создается в основном кодом akka-http и akka -actor, поэтому я на самом деле не знаю, как он выглядит под капотом, и это не очевидно из чтения кода, который я прочитал, поэтому далеко.
Итак, что я хотел бы сделать, это:
- Посмотреть, как выглядит общий материализованный потоковый граф, или, по крайней мере, увидеть всю конструкцию в одном месте, а не разрозненно над различными исходными файлами. Есть ли способ выйти из материализованного графа?
- Посмотрите, что вызывает соответствующее вытягивание в первой ситуации. Дело в том, что происходят и другие запросы, которые могут иметь значение, а могут и не быть, поэтому просто установка точки останова на метод, связанный с извлечением, может привести к сбивающим с толку, нерелевантным совпадениям. происходит во второй ситуации.
У меня уже есть приблизительное представление о проблеме вероятно - мой код недостаточно асинхронен - но мне нужно понять, что происходит именно так, чтобы я мог написать регрессионный тест, который быстро воспроизводит проблему, без необходимости во всей этой сложной настройке, которая у меня есть во второй ситуации.
Я включил следующие параметры отладки и включил ведение журнала уровня DEBUG для всего, но, насколько я понимаю, он по-прежнему не регистрирует достаточно информации.
akka {
http {
host-connection-pool {
idle-timeout = infinite
}
}
io {
tcp {
trace-logging = on
windows-connection-abort-workaround-enabled = auto
}
}
loglevel = "DEBUG"
}