SonarQube eclipse插件:同步问题时超时

时间:2016-04-04 13:24:05

标签: eclipse eclipse-plugin sonarqube sonarqube-4.5 sonarlint-eclipse

我们的SonarQube设置中存在一个非常烦人的问题。

设置

在服务器上,我们有一个正在运行的SQ 4.5.5安装。我们使用SonarQube eclipse插件将Sonar功能集成到IDE中。我们目前使用的是SQ eclipse插件的3.4版本。

问题

当我们尝试为任何eclipse插件同步Sonar问题时,需要几分钟时间,并且会出现以下screeshot中的对话框。

enter image description here

eclipse工作区中的.log文件在查询SonarQube服务器时会显示超时问题。如果我在浏览器中打开URL,页面加载需要很长时间,但最终会显示有关Sonar问题的JSON格式数据。所以它显然似乎是一个服务器问题 - 我们的服务器只是为了及时获取数据。

!ENTRY org.sonar.ide.eclipse.core 4 4 2016-04-01 08:24:35.561
!MESSAGE Error during issue query org.sonar.wsclient.issue.IssueQuery@f3d040
!STACK 0
org.sonar.ide.eclipse.wsclient.SonarWSClientException: Error during issue query org.sonar.wsclient.issue.IssueQuery@f3d040
    at org.sonar.ide.eclipse.wsclient.internal.SonarWSClientFacade.findIssues(SonarWSClientFacade.java:199)
    at org.sonar.ide.eclipse.wsclient.internal.SonarWSClientFacade.getUnresolvedRemoteIssuesRecursively(SonarWSClientFacade.java:174)
    at org.sonar.ide.eclipse.core.internal.remote.RemoteSourceCode.getRemoteIssuesRecursively(RemoteSourceCode.java:102)
    at org.sonar.ide.eclipse.core.internal.jobs.SynchronizeAllIssuesJob.doRefreshIssues(SynchronizeAllIssuesJob.java:138)
    at org.sonar.ide.eclipse.core.internal.jobs.SynchronizeAllIssuesJob.fetchRemoteIssues(SynchronizeAllIssuesJob.java:127)
    at org.sonar.ide.eclipse.core.internal.jobs.SynchronizeAllIssuesJob.run(SynchronizeAllIssuesJob.java:78)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.IllegalStateException: Fail to request http://AcmeSonarServer:8080/sonar/api/issues/search?resolved=false&pageSize=-1&componentRoots=ACME.Test.All:acmeTests&pageIndex=1
    at org.sonar.wsclient.internal.HttpRequestFactory.execute(HttpRequestFactory.java:156)
    at org.sonar.wsclient.internal.HttpRequestFactory.get(HttpRequestFactory.java:129)
    at org.sonar.wsclient.issue.internal.DefaultIssueClient.find(DefaultIssueClient.java:49)
    at org.sonar.ide.eclipse.wsclient.internal.SonarWSClientFacade.findIssues(SonarWSClientFacade.java:195)
    ... 6 more
Caused by: java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(Unknown Source)
    at java.io.BufferedInputStream.fill(Unknown Source)
    at java.io.BufferedInputStream.read1(Unknown Source)
    at java.io.BufferedInputStream.read(Unknown Source)
    at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
    at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at java.net.HttpURLConnection.getResponseCode(Unknown Source)
    at org.sonar.wsclient.kevinsawicki.HttpRequest.code(HttpRequest.java:1481)
    at org.sonar.wsclient.internal.HttpRequestFactory.isSuccess(HttpRequestFactory.java:161)
    at org.sonar.wsclient.internal.HttpRequestFactory.execute(HttpRequestFactory.java:149)
    ... 9 more

我们测试的任何版本的日食(Indigo,Luna,Mars)都会出现这个问题。我们发现的唯一解决方法是在3.5版中安装SonarQube插件并检查选项强制完全预览而不是增量分析。但是,检查eclipse插件3.4版中的选项没有帮助。

enter image description here

为什么不升级插件?

很明显,我们应该更新我们的eclipse插件以再次拥有一个工作环境,但需要Java 1.7的3.5版本。截至目前,我们仍在使用旧版1.6,我们在当前环境中无法轻松升级。

除此之外,如果未选中强制完全预览而不是增量分析,则问题仍然与插件3.5有关。因此,这意味着错误可以通过多个eclipse版本和多个插件版本重现。

毕竟它正在使用SQ 4.5.5和eclipse插件3.4几个月,我们只是不知道上述超时行为的原因是什么。

  • 将Sonar Cube服务器更新为更新版本会有帮助吗?
  • 数据库维护操作(重组索引或类似的东西)会不会有帮助?
  • 我们如何配置服务器以便及时提供答案?

更新

正如我在下面的回答中所提到的,每天重建数据库索引首先有帮助。但是几天之后,即使在重建索引后直接触发SonarQube的局部声纳分析也会失败。

SonarQube 4.5.7的更新也没有帮助。 所以基本上,我们现在回到原点。

  • 我们的声纳项目有可能太大吗?我们正在一个> 500k LOC的单个声纳项目中跟踪我们的软件开发。
  • 您是否建议升级到SonarQube 5.x?

0 个答案:

没有答案