zoukankan      html  css  js  c++  java
  • 二、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节点启动流程

  • 相关阅读:
    get post 小结
    ddt 实例
    通俗大白话来理解TCP协议的三次握手和四次断开
    find xss
    use . adb . get wifi
    http bass
    mac 配置homebrew
    id 与 void * 转换
    Maven
    percent-encode 百分号编码
  • 原文地址:https://www.cnblogs.com/shwang/p/12620389.html
Copyright © 2011-2022 走看看