声纳扫描仪版本:3.0.1.733 Sonarqube版本:5.6.5
我们在Windows机器上有一个声纳扫描仪,它扫描我们的项目并将结果提交给我们现在在Linux机器上的Sonar服务器。在此之前,扫描仪和声纳服务器以及声纳数据库都在同一个Windows机器上,我们没有任何问题。我们采用了声纳数据库备份并将其恢复到我们新Linux盒子上的另一个数据库中(现在Sonar DB和Sonarqube服务器都在我们的Linux机器上)。服务器是从本机软件包
安装的我现在的问题是,当我们的扫描仪提交到服务器时,没有报告任何问题。我们以前遇到过一些问题,现在一切都重新归零。
我调查了一下,我可以看到后台任务被接收并成功处理。甚至服务器UI也显示最新扫描的日期。
扫描仪也会报告成功。我在调试模式下运行扫描仪,我可以看到与服务器的连接,有200个状态响应。
我在日志中看不到任何异常。
如果我将扫描仪重新指向旧的Windows声纳盒,它仍会显示正确的问题数。
有人可以帮我吗?
答案 0 :(得分:2)
通常怀疑
SonarQube迁移/升级 之后的不一致度量和/或问题计数表明本地ElasticSearch索引已损坏。 (提醒: ElasticSearch 是SonarQube用来索引问题,规则等的搜索引擎,以便它可以快速访问这些数据而无需一直查询数据库,请参阅SonarQube Architecture )。
<强>解决方案强>
sonar_install_dir/data/es
根本原因分析
关于为什么会发生这种情况的问题:一个常见的情况是在升级和/或更改数据库后未正确重建ElasticSearch索引。这是一个典型的场景:您首先在嵌入式H2数据库上启动SonarQube,对其进行实验,然后将其插入到完整的数据库中。如果ElasticSearch索引没有被中间划分/重建,那么索引就会被破坏,因为它曾经与之同步的数据库/数据集突然发生了变化。
好消息
SonarQube v6.6正在进行改进,以便在应用程序级别更好地检测/处理这种情况(即检测到应该重建ElasticSearch索引,因为数据库已更改)。请参阅SONAR-5681 - 当数据库发生更改时,必须删除Elasticsearch索引。