# 목표
es code분석이 필요해짐에 따라 es 소스를 intellij에 가져와서 debugging해보자.

# 가이드 문서
es버전 6.6이상에서 7.5이하면 아래 가이드 처럼 하면되는데,
https://www.elastic.co/kr/blog/how-to-debug-elasticsearch-source-code-in-intellij-idea 

7.5이상이라면, 아래 풀리퀘를 참고하여 변경된 부분만 원복해서 위와 같은 가이드로 진행하면 된다.
https://github.com/elastic/elasticsearch/pull/48188/files

 

Switch to debug with server=n by atorok · Pull Request #48188 · elastic/elasticsearch

Before this change one needed to re-start debugging several times, as we launched multiple JVMs in debug mode. With this option the IDE has the option to re-launch and listen for connections again ...

github.com


# 진행

1. es 소스 로컬에 가져오기.

git clone https://github.com/elastic/elasticsearch.git
cd elasticsearch 
git checkout --track origin/7.1


2.  gradle설치하고, java 설치하고, JAVA_HOME 설정하기.

((gradle 설치))
   * mac에서는 gradled은 homebrew로 간단하게 설치가되고
     window에서는 gradle홈피가서 zip파일 다운로드받아서 풀고, 환경변수, path만 잡아주면 됨.

((java 설치))
   * java는 es7.1기준 12가 필요해서, java12 설치함.
   . bash_profile에 java home설정해주고 source ~/.bash_profile
     vi ~/.bash_profile

export JAVA_HOME=/library/java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home
export PATH=${PATH}:$JAVA_HOME/bin


   * java 설치 파일 url : https://www.oracle.com/java/technologies/javase/jdk12-archive-downloads.html

 

Java Archive Downloads - Java SE 12

WARNING: These older versions of the JRE and JDK are provided to help developers debug issues in older systems. They are not updated with the latest security patches and are not recommended for use in production. For production use Oracle recommends downlo

www.oracle.com


3. ./gradlew idea
   * 일단 terminal에서 es repository를 클론해온 elasticsearch 디렉터리로 가서 ./gradlew idea 를 실행
   * 이거 해놓고 intellij에서 import해야 자연스럽게 gradle project import가 편해지는 듯.

4. intellij 열어서, import project > gradle 체크 하고 > 오픈.

5. intellij에 gradle auto enable 이런거 뜨면 ok 체크 해주고, 

6. intellij > file > project setting 가서 jdk 12로 변경해주기.
   * platform setting > sdk에서 jdk12 설치한 거 홈으로 잡아주고,
   * project setting > project에서 project sdk를 jdk12로 잡아주기.

7. 소스 폴더 distribution>build.gradle에서 xpack.security.enabled'를 false로 바꿔줘야 localhost에서 rest api사용가능함.

8. intellij 터미널에서 ./gradlew run --debug-jvm 실행.
   * 하다가 뻑나면 ./gradlew clean하고, ./gradlew idea하고 다시 실행.

9. 아래와 같이 run#start가 뜨면 된건데, 이때 intellij>run>attach to process를 누르고 방금 빌드완료한 snapshot넣어주면,
    디버깅 준비 완료!!
    ============-> 98% EXECUTING [33m 6s]
    > :distribution:run#start

10. 이제 break point 걸어서, localhost:9200/_cluster/settings 등등 api날려보면서 코드 디버깅 할 수 있음.

+ Recent posts