无法启动 Sonar Web 服务

Posted

技术标签:

【中文标题】无法启动 Sonar Web 服务【英文标题】:Failed to start Sonar Webservice 【发布时间】:2015-10-25 10:44:31 【问题描述】:

我正在开发 Sonarqube 5.1。它以前工作得很好,后来我得到了这个设备错误没有剩余空间。所以我删除了一些不需要的文件并重新启动了服务。现在我可以看到服务状态正在运行,但我无法访问网页(因为声纳网络服务没有启动) 我检查了日志,发现以下错误。

2015.08.03 10:58:56 INFO   es[o.elasticsearch.node]  [sonar-1438592314778] started
2015.08.03 10:59:03 INFO   es[o.e.gateway]  [sonar-1438592314778] recovered [6] indices into cluster_state
2015.08.03 11:00:44 WARN   es[o.e.indices.cluster]  [sonar-1438592314778] [sourcelines][0] failed to start shard
org.elasticsearch.index.gateway.IndexShardGatewayRecoveryException: [sourcelines][0] failed to recover shard
at     org.elasticsearch.index.gateway.local.LocalIndexShardGateway.recover(LocalIndexShardGateway.java:287) ~[elasticsearch-1.4.4.jar:na]
at  org.elasticsearch.index.gateway.IndexShardGatewayService$1.run(IndexShardGatewayService.java:132) ~[elasticsearch-1.4.4.jar:na]
at  java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:114 2) [na:1.8.0_40]
at  java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_40]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_40]
Caused by: org.elasticsearch.index.translog.TranslogCorruptedException: translog corruption while reading from stream
at  org.elasticsearch.index.translog.ChecksummedTranslogStream.read(ChecksummedTranslogStream.java:70) ~[elasticsearch-1.4.4.jar:na]
at  org.elasticsearch.index.gateway.local.LocalIndexShardGateway.recover(LocalIndexShardGateway.java:257) ~[elasticsearch-1.4.4.jar:na]
... 4 common frames omitted
Caused by: org.elasticsearch.ElasticsearchException: failed to read [sourceline][22c2d1d1-8e73-47c0-b9fa-f8f5cc96b93f_796]
at org.elasticsearch.index.translog.Translog$Index.readFrom(Translog.java:520) ~[elasticsearch-1.4.4.jar:na]
at  org.elasticsearch.index.translog.ChecksummedTranslogStream.read(ChecksummedTranslogStream.java:68) ~[elasticsearch-1.4.4.jar:na]
... 5 common frames omitted
Caused by: org.elasticsearch.ElasticsearchIllegalArgumentException: No version type match [105]
at org.elasticsearch.index.VersionType.fromValue(VersionType.java:307) ~[elasticsearch-1.4.4.jar:na]
at org.elasticsearch.index.translog.Translog$Index.readFrom(Translog.java:517) ~[elasticsearch-1.4.4.jar:na]
... 6 common frames omitted
2015.08.03 11:00:44 WARN   es[o.e.c.action.shard]  [sonar-1438592314778] [sourcelines][0] sending failed shard for [sourcelines][0], node[5eRgYcVUTNCNLjhhzdiHGA], [P], s[INITIALIZING], indexUUID [JaH5lnRnRVOFD95Nw28W5Q], reason [Failed to start shard, message [IndexShardGatewayRecoveryException[[sourcelines][0] failed to recover shard]; nested: TranslogCorruptedException[translog corruption while reading from stream]; nested: ElasticsearchException[failed to read [sourceline][22c2d1d1-8e73-47c0-b9fa-f8f5cc96b93f_796]]; nested: ElasticsearchIllegalArgumentException[No version type match [105]]; ]]
2015.08.03 11:00:44 WARN   es[o.e.c.action.shard]  [sonar-1438592314778] [sourcelines][0] received shard failed for [sourcelines][0], node[5eRgYcVUTNCNLjhhzdiHGA], [P], s[INITIALIZING], indexUUID [JaH5lnRnRVOFD95Nw28W5Q], reason [Failed to start shard, message [IndexShardGatewayRecoveryException[[sourcelines][0] failed to recover shard]; nested: TranslogCorruptedException[translog corruption while reading from stream]; nested: ElasticsearchException[failed to read [sourceline][22c2d1d1-8e73-47c0-b9fa-f8f5cc96b93f_796]]; nested: ElasticsearchIllegalArgumentException[No version type match [105]]; ]]

我必须删除分片吗?如果是的话怎么做?如何恢复碎片? 索引错误吗?我在哪里可以找到我的机器上的 [sourcelines]? 帮我解决这个问题。

提前谢谢你。

【问题讨论】:

【参考方案1】:

如果您使用数据库来存储声纳分析结果,则清除数据库一次,然后再次启动声纳,因为它有时会混淆存储在数据库中的新旧结果。它不会对您的文件进行索引。

【讨论】:

【参考方案2】:

您的 ES 索引似乎已损坏。

所有基本信息都存储在数据库中。请勿手动删除或更新。

相反,如果您删除 ES 索引,它们只会在下次启动时重新构建(这可能需要一些时间,具体取决于您拥有的数据量)。

为此,请删除 SQ 实例的 data 目录中的 es 目录。

【讨论】:

注意:从 SonarQube 6.6 起,目录被命名为 'es5' 而不是 'es' SonarQube 7 被称为“es6”。【参考方案3】:

我们多次遇到这个问题。我们删除SQ实例$SONAR_HOME/data目录下的es目录,重启SQ实例。它再次开始索引 注意:您将面临的唯一问题是,在索引期间,您的 SQ 网络服务器将无法访问。您无法浏览您的 localhost:9000(除非索引结束,否则它将继续加载)。由于我们的项目很大,完成索引需要几个小时。完成索引后,您可以浏览您的 SQ 网络服务器。

【讨论】:

【参考方案4】:

删除translog文件夹内的.recovery文件

例如:/es/elasticsearch-1.7.1/data/[elasticsearch_clustername]/nodes/0/indices/[indexname]/2/translog/

【讨论】:

【参考方案5】:

有一种方法可以专门修复elasticsearch的translog的损坏,这里受到影响。接受的答案会导致高服务器开销,并且似乎可以接受大量数据丢失。 第一步,看看我的回复(类似于 Balaji 的回复,但使用官方工具):Elastic Search IndexShardGatewayRecoveryException

【讨论】:

以上是关于无法启动 Sonar Web 服务的主要内容,如果未能解决你的问题,请参考以下文章

SonarQube无法插入MySql数据库

无法启动 bean 'webServerStartStop';无法启动嵌入式 Tomcat 服务器 - spring-boot-starter-web

IIS5.1默认网站无法启动,World Wide Web Publishing服务无法启动 提示错误127 找不到指定程序

vs2015 无法启动IIS Express Web服务器

MSC000001:无法启动服务 jboss.web.deployment.default-host./scWeb ..... JBAS018040:无法启动上下文

由于缺少 ServletWebServerFactory,无法启动 Web 服务器