🤯
elasticsearchをビルドしてIntellijからデバッグできるようにする
概要
- elasticsearchをcloneする
- elasticsearchをbuildする
- elasticsearchをdebugする
実行環境
- elasticsearch 8.16.0
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.5 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
$ java --version
openjdk 21.0.5 2024-10-15
OpenJDK Runtime Environment (build 21.0.5+11-Ubuntu-1ubuntu122.04)
OpenJDK 64-Bit Server VM (build 21.0.5+11-Ubuntu-1ubuntu122.04, mixed mode, sharing)
$ docker compose version
Docker Compose version v2.29.7-desktop.1
$ docker --version
Docker version 27.3.1, build ce12230
1.elasticsearchをcloneする
インストールしたいディレクトリ階層でこれを実行するだけでOK
git clone git@github.com:elastic/elasticsearch.git
2.elasticsearchをbuildする
今回はIntellijにcloneしたディレクトリをそのままインポートして自動的にbuildしてもらうことにする。erasticsearch配下にある以下のファイルを適宜参考に進めていく。
- README.asciidoc
- COTRIBUTING.md
- TESTING.asciidoc
①対応するJDKをインストールする
詳細はCONTRIBUTING.mdを参照のこと。インストールは以下の手順でOK。
仮にバージョンが違っていても./gradlew run時のエラーログに出力されるのでそれに従って対応しているバージョンに入れ替えればOK。②Dockerをインストールする
詳細はREADME.asciidocを参照のこと。インストールは以下の手順でOK。
なお、KVMが存在しないためDocker Desktopはインストールできていないが、Dockerは問題なく落とせているようなので取り敢えずこれで進める(結果は問題なくdebugまでできた)③ Intellijにインポートする
ここらへんを参考にただインポートするだけでした。勝手にbuildまでやってくれた。
3.elasticsearchをdebugする
ここは2-③のURLを参考に進めていく。具体的な手順は以下。
- IntelliJ側で「Debug Elasticsearch」を選択してdebugを起動する。接続先ポートは5007を設定(詳細はTESTING.asciidocに記載があるので参考にする)
- リモートデバックオブションを指定して以下コマンド(例のごとくTESTING.asciidocに記載がある)を実行。初回は結構時間がかかる。
./gradlew run --debug-jvm
- Intellijのdebugコンソールに以下が出力される → OK
Connected to the target VM, address: 'localhost:5007', transport: 'socket'
- RestRequestがよく使われるクラスだそうなので適当なメソッドにブレークポイントを打ってcurlを実行するとちゃんと処理が止まる → OK
curl -u elastic:password localhost:9200
まとめ
elasticsearchをデバッグ実行するにあたっての手順をまとめた。
ここまでやっておいて肝心のelasticsearchのことを何も知らないため「ElasticStack実践入門」を読むことにします。
Discussion