SonarQube 5.6.7升级至6.7.2失败:出现“不可恢复的索引故障”
SonarQube 5.6.7 升级到 6.7.2:Elasticsearch 索引初始化失败解决指南
我碰到过不少用户在从SonarQube 5.6.x升级到6.7.x版本时遇到这个索引初始化失败的问题,虽然你已经确认了Elasticsearch分区空间充足,但这类问题大多和索引损坏、JVM配置或者升级细节有关,给你几个针对性的解决步骤:
1. 清理并重建Elasticsearch索引
旧版本的ES索引可能存在隐性损坏,导致升级时无法正常迁移:
- 先彻底停止SonarQube服务
- 找到SonarQube安装目录下的
data/es文件夹(这是ES存储索引的核心目录) - 先备份这个文件夹(避免数据丢失),然后删除其中的所有文件和子目录
- 重新启动SonarQube,系统会自动重新创建并初始化所有所需的ES索引
2. 检查Elasticsearch的JVM堆配置
SonarQube 6.x版本配套的ES对JVM参数要求更严格,不合理的堆内存设置会导致索引失败:
- 打开SonarQube配置文件
conf/sonar.properties - 找到
sonar.search.javaOpts配置项,建议设置为-Xms4g -Xmx4g(注意:堆内存不要超过物理内存的50%,且最大不要超过32GB,否则会影响ES性能) - 保存配置后重启SonarQube
3. 验证插件兼容性与升级步骤
插件不兼容也可能触发索引初始化异常:
- 升级前请确保所有已安装的插件都兼容SonarQube 6.7.2版本,建议先卸载不兼容的插件,升级完成后再重新安装对应版本的插件
- 确认你没有跳过必要的升级前置步骤,虽然5.6.7到6.7.2支持直接升级,但如果数据库有特殊配置,建议先备份完整数据库后再执行升级
附你的报错信息:
2018.03.21 11:13:10 ERROR web[][o.s.s.p.Platform] Background initialization failed. Stopping SonarQube java.lang.IllegalStateException: Unrecoverable indexation failures at org.sonar.server.es.IndexingList...
内容的提问来源于stack exchange,提问作者C. Duggan
相关产品推荐
相关产品推荐

