二、ElasticSearch6.8 源码远程调试
一、环境说明
windows编译ElasticSearch太头疼了,推荐MacOS或Linux
操作系统:Ubuntu 19.10
IDE:IDEA 20193.4(Community Edition)
JDK:12.0.2
ElasticSearch:6.8.0
Gradle:5.2.1
二、获取源码
git clone https://github.com/elastic/elasticsearch.git
cd elasticsearch
#拆分出一个版本用于调试
git checkout -b debug_v6.8.0
#切换至6.8.0版本
git checkout v6.8.0
推荐:
#网络太慢的话,可以直接下载v6.8.0代码
https://github.com/elastic/elasticsearch/archive/v6.8.0.zip
三、编译
环境准备
- 系统环境准备
# export GRADLE_HOME=/opt/gradle-4.6
export GRADLE_HOME=/opt/gradle-5.2.1
export PATH=$GRADLE_HOME/bin:$PATH
# export JAVA_HOME=/usr/java/jdk1.8.0_191
# export JAVA_HOME=/usr/java/jdk-11.0.6
export JAVA_HOME=/usr/java/jdk-12.0.2
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export JRE_HOME=$JAVA_HOME/jre
- gradle准备
复制一份gradle
cp gradle-5.2.1-bin.zip ~./elasticsearch-6.8.0/gradle/wrapper/
- 在当前账户目录下的.gradle/下添加名为init.gradle的配置文件
allprojects {
repositories {
maven {
url "https://maven.aliyun.com/nexus/content/groups/public"
}
}
}
- 修改配置文件中的本地gradle和数字签名
vim elasticsearch-6.8.0/gradle/wrapper/gradle-wrapper.properties
distributionUrl=gradle-5.2.1-bin.zip
distributionSha256Sum=xxx
签名的内容
sha256sum gradle-5.2.1-bin.zip
2、编译
- 修改权限
sudo chmod 777 -R elasticsearch-6.8.0
- 编译
gradle idea
- 编译成功
BUILD SUCCESSFUL in 8m 11s
347 actionable tasks: 347 executed
四、项目导入
IDEA导入es项目Import Project
选择gradle
等IDEA构建完成
五、远程调试
- 在远程的ES集群中增加配置(增加调试端口)
在运行ES实例的节点上配置config/jvm.options
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=2222
创建远程配置
设置远程参数(端口选择之前的配置端口)
点击debug
put一个索引
几乎ES所有操作都会通过rest api进行操作只要debug在RestController拦截即可
本方法可以调试已启动节点的运行逻辑,无法debug节点启动流程