После долгой борьбы с этой проблемой я наконец нашел ответ с помощью разработчиков Heron (снимаю перед ними шляпу). Ответ: Удаленная отладка процессов jvm.
Раздел по устранению неполадок (см. Отладка топологий Java на этой странице) был добавлен в документацию Heron, которая содержит необходимые инструкции для удаленной отладки heron. Это хорошо, но не то, что мне нужно, потому что это только для отладки экземпляров (болты/носики...). Но мне нужно было отлаживать основные части, такие как планировщик, лаунчер и т. д.
Чтобы включить полную удаленную отладку для heron, вы должны добавить вторую строку в execute.py (можно найти в heron/tools/cli/src/python em>) файл:
java_opts = ['-D' + opt for opt in java_defines]
//add this line here
java_opts.append('-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005')
адрес: порт, который вы настроили в своей среде IDE.
приостановить: y означает приостановку выполнения до тех пор, пока клиент (отладчик или IDE) не подключится к серверу (процесс jvm).
Инструкции по настройке удаленной отладки в Intellij можно найти в этой ссылке< /а>.
Важно: не забудьте перекомпилировать исходный код и установить пакеты bin. Скомпилируйте и установите герона
bazel build --config=ubuntu heron/...
bazel run --config=ubuntu -- scripts/packages:heron-client-install.sh --user
bazel run --config=ubuntu -- scripts/packages:heron-api-install.sh --user --maven
Теперь разместите свои контрольные точки, где хотите, и отправьте свою топологию из терминала, а затем начните отладку в IDE, и она приведет вас к контрольным точкам. Просто не забудьте добавить контрольные точки в путь выполнения, SubmitterMain или SchedulerMain могут быть хорошими кандидатами.
person
Firouziam
schedule
06.12.2016