我们的SonarQube设置中存在一个非常烦人的问题。
设置
在服务器上,我们有一个正在运行的SQ 4.5.5安装。我们使用SonarQube eclipse插件将Sonar功能集成到IDE中。我们目前使用的是SQ eclipse插件的3.4版本。
问题
当我们尝试为任何eclipse插件同步Sonar问题时,需要几分钟时间,并且会出现以下screeshot中的对话框。
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版中的选项没有帮助。
为什么不升级插件?
很明显,我们应该更新我们的eclipse插件以再次拥有一个工作环境,但需要Java 1.7的3.5版本。截至目前,我们仍在使用旧版1.6,我们在当前环境中无法轻松升级。
除此之外,如果未选中强制完全预览而不是增量分析,则问题仍然与插件3.5有关。因此,这意味着错误可以通过多个eclipse版本和多个插件版本重现。
毕竟它正在使用SQ 4.5.5和eclipse插件3.4几个月,我们只是不知道上述超时行为的原因是什么。
更新
正如我在下面的回答中所提到的,每天重建数据库索引首先有帮助。但是几天之后,即使在重建索引后直接触发SonarQube的局部声纳分析也会失败。
SonarQube 4.5.7的更新也没有帮助。 所以基本上,我们现在回到原点。