SonarQubeの設定ではかなり厄介な問題があります。我々は、実行中のSQ 4.5.5をインストールしているサーバでSonarQube eclipseプラグイン:問題を同期させる際のタイムアウト
セットアップ
。 SonarQube eclipseプラグインを使用してSonarの機能をIDEに統合します。現在、SQ eclipseプラグインのバージョン3.4を使用しています。
問題
我々はEclipseプラグインのいずれかのソナーの問題をsnychronizeしようとすると、それは数分かかり、screeshot中のダイアログが下に表示されます。
問題についてSonarQubeサーバーを照会するときEclipseワークスペース内.logファイルには、タイムアウトを示しています。ブラウザでURLを開くと、ページが読み込まれるまでにかなりの時間がかかりますが、最終的にJSON形式のソナーの問題に関するデータが表示されます。だから明らかにサーバーの問題のように思えます。私たちのサーバーは、時間内にデータを取得するのが遅いだけです。
!ENTRY org.sonar.ide.eclipse.core 4 4 2016-04-01 08:24:35.561
!MESSAGE Error during issue query [email protected]
!STACK 0
org.sonar.ide.eclipse.wsclient.SonarWSClientException: Error during issue query [email protected]
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
この問題は、私たちがテストした任意のバージョンのEclipse(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を数ヶ月使用していたのですが、上記のタイムアウト動作の原因が何であるか分かりません。
- Sonar Cubeサーバーを最新のバージョンに更新するのに役立ちますか?
- データベースメンテナンスアクション(インデックスの再編成など)はここで役立ちますか?
- 時間内に回答を送信できるようにサーバーを設定するにはどうすればよいですか?
更新:
下記の私の答えで述べたように、日常的にデータベースのインデックスの再構築は、最初に助けました。しかし、数日後、SonarQubeを使った局所ソナー解析を引き起こす指標を再構築した直後でさえも失敗するでしょう。
SonarQube 4.5.7へのアップデートは役に立ちませんでした。 基本的に、私たちは正方形に戻っています。
- 私たちのソナープロジェクトは大きすぎますか?私たちは、> 500k LOCのソナープロジェクトでソフトウェア開発を追跡しています。
- SonarQube 5.xへのアップグレードをお勧めしますか?