惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Latest news
Latest news
爱范儿
爱范儿
V
V2EX
J
Java Code Geeks
I
InfoQ
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
A
Arctic Wolf
月光博客
月光博客
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
SegmentFault 最新的问题
C
Cyber Attacks, Cyber Crime and Cyber Security
L
Lohrmann on Cybersecurity
Cisco Talos Blog
Cisco Talos Blog
量子位
C
CERT Recently Published Vulnerability Notes
Know Your Adversary
Know Your Adversary
酷 壳 – CoolShell
酷 壳 – CoolShell
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
P
Privacy & Cybersecurity Law Blog
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
T
The Exploit Database - CXSecurity.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Scott Helme
Scott Helme
C
Cisco Blogs
T
Tor Project blog
I
Intezer
Project Zero
Project Zero
罗磊的独立博客
T
Tenable Blog
Jina AI
Jina AI
P
Proofpoint News Feed
T
Threatpost
NISL@THU
NISL@THU
N
News and Events Feed by Topic
Engineering at Meta
Engineering at Meta
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
AI
AI
Recorded Future
Recorded Future
T
Tailwind CSS Blog
T
The Blog of Author Tim Ferriss
S
Security @ Cisco Blogs
云风的 BLOG
云风的 BLOG
N
News | PayPal Newsroom

博客园 - 软件心理学工程师

SPIFFE/SPIRE 的身份哲学与技术实现 后量子密码学(post-quantum cryptography):为什么重要以及如何使用 密钥管理碎碎念 SpringBoot集成resilience4j进行熔断和一个响应式编程的问题 凤凰项目&DevOps实践指南 OAuth2和OpenID API横向越权问题的分析和解决 初识RAG 基于AWS的密钥管理系统 加密算法的使用场景 Linux透明大页(Transparent Huge Pages)对ES性能对影响 《java8 in action》读书笔记 ES索引的一些长度限制 初识redis Elasticsearch慢查询故障诊断 Elasticsearch搜索调优 elasticsearch基础知识杂记 elasticsearch.yml 常用参数说明 linux log rotate CAP碎碎念 彻底删除kafka topic步骤
elasticsearch local debug环境搭建
软件心理学工程师 · 2017-12-31 · via 博客园 - 软件心理学工程师

最近计划看看elasticsearch的源码,首先得把local debug环境搞定。

下载源码。因为公司产线是5.6.5,所以就下载了5.6.5的代码。

源码编译。先进入到/elasticsearch/core目录,因为IDE是idea,所以用gradle idea编译core目录。然后进入到/elasticsearch目录,在运行gradle idea命令。gradle版本要3.5以上,我用的是4.4.1。

导入IDE。import project(选择elasticsearch根目录) -> import project from external model(选Gradle)->next(gradle JVM选1.8)->finish.

idea会持续load一段时间,主要是加载gradle的依赖包。完全打开后:

配置启动脚本。Run/Debug Configuration -> Add Application.

vm options:

下载elasticsearch 5.6.5的发行版的zip包,解压缩,目录重命名为elasticsearchdistribution,copy到/elasticsearch/distribution/目录下。目的是为了local debug的时候,能直接使用发行版本中的lib。

然后就可以debug了。不过要想elasticsearch正常启动起来,可能还是会遇到一些问题,本人主要遇到了三个问题:

1.检查重复的jar包(jar hell)。存在重复的jar冲突,我的做法是重命名JDK中重复的jar.

2.java安全策略问题:access denied ("javax.management.MBeanTrustPermission" "register")。

创建一个elasticsearch.policy文件,内容:

grant{
permission javax.management.MBeanTruxtPermission "register";
permission javax.management.MBeanServerPermission "createMBeanServer";
};

通过配置vm options的第三行生效。

3.distribution包中jar的版本问题。首先是出现一个error: org.elasticsearch.bootstrap.Security类的readPolicy()方法中subString的index为-1,造成subString越界。

通过debug可以看到遍历的是/elasticsearch/distribution/elasticsearchdistribution/modules/reindex中的jar文件,遂把该文件夹下的elasticsearch-rest-client-5.6.5.jar包名称改为elasticsearch-rest-client-5.6.5-SNAPSHOT.jar。

最终,可以动过idea的run/debug成功启动elasticsearch。