この問題に長い間苦労した後、Heron 開発者の助けを借りて、ようやく答えを見つけました (彼らには脱帽です)。答えはリモート デバッグ jvm プロセスです。
トラブルシューティング セクション (このページの「 Java トポロジのデバッグ」を参照) が Heron のドキュメントに追加され、heron のリモート デバッグに必要な手順が説明されています。インスタンス(ボルト/スパウト...)のデバッグ専用であるため、良いですが、必要なものではありません。しかし、スケジューラ、ランチャーなどのコア部分をデバッグする必要がありました.
heron の完全なリモート デバッグを有効にするには、 execute.py ( heron/tools/cli/src/pythonにあります) ファイルに 2 行目を追加する必要があります。
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 で構成したポート。
suspend: 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 が適切な候補になる可能性があります。