0

Wir haben ein ziemlich nerviges Problem in unserem SonarQube-Setup.SonarQube Eclipse-Plugin: Timeout bei der Synchronisierung von Problemen

Das Setup

Auf dem Server haben wir eine laufende SQ 4.5.5 Installation. Wir verwenden das SonarQube Eclipse-Plugin, um die Sonar-Funktionalität in die IDE zu integrieren. Wir verwenden derzeit die Version 3.4 des SQ Eclipse Plugins.

Die Ausgabe

Wenn wir versuchen, die Sonar Fragen für jeden unserer Eclipse Plugins snychronize, dauert es ein paar Minuten und den Dialog in der Screeshot unten erscheint.

enter image description here

Die log-Datei in der Eclipse-Workspace zeigt einen Timeout, wenn die Sonarqube Server für Fragen abfragt. Wenn ich die URL in einem Browser öffne, dauert es ziemlich lange, bis die Seite geladen wird. Es werden jedoch möglicherweise JSON-formatierte Daten zu unseren Sonar-Problemen angezeigt. Es scheint also ein Serverproblem zu sein - unser Server ist einfach zu langsam, um die Daten rechtzeitig zu bekommen.

!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 

Dieses Problem besteht auf jeder Version von Eclipse, die wir getestet haben (Indigo, Luna, Mars). Die einzige Problemumgehung, die wir gefunden haben, war die Installation des SonarQube-Plugins in Version 3.5 UND die Option Erzwingen der vollständigen Vorschau anstelle der inkrementellen Analyse. Allerdings hilft das Überprüfen der Option in Version 3.4 des Eclipse-Plugins nicht.

enter image description here

Warum gehst du nicht einfach das Plugin aktualisieren?

Es scheint ziemlich offensichtlich, dass wir nur unser Eclipse-Plugin aktualisieren sollten, um wieder eine Arbeitsumgebung zu haben, aber Version 3.5 erfordert Java 1.7. Ab jetzt rollen wir immer noch mit dem alten 1.6 und wir können einfach nicht so leicht in unserer aktuellen Umgebung aktualisieren.

Ansonsten ist das Problem immer noch mit Plugin 3.5, wenn erzwingen Volle Vorschau statt inkrementelle Analyse ist nicht überprüft. Dies bedeutet, dass der Fehler mit mehreren Eclipse-Versionen und mehreren Plugin-Versionen reproduzierbar ist.

Immerhin hat es mit SQ 4.5.5 und eclipse plugin 3.4 seit mehreren Monaten funktioniert, wir wissen nur nicht, was die Ursache für das oben erwähnte Timeout-Verhalten sein kann.

  • Wäre es hilfreich, unseren Sonar Cube-Server auf eine neuere Version zu aktualisieren?
  • Helfen Datenbankwartungsaktionen (Reorganisieren von Indizes oder ähnlichem) hier?
  • Wie können wir den Server konfigurieren, um die Antwort rechtzeitig zu liefern?

Update:

Wie unten in meiner Antwort erwähnt, der Datenbank-Indizes auf täglicher Basis Wiederaufbau half zunächst.Aber nach ein paar Tagen, selbst direkt nach dem Neuaufbau der Indizes, würde das Auslösen einer lokalen Sonaranalyse mit dem SonarQube fehlschlagen.

Ein Update auf SonarQube 4.5.7 hat auch nicht geholfen. Also im Grunde sind wir jetzt wieder auf Platz eins.

  • Ist es möglich, dass unser Sonarprojekt einfach zu groß ist? Wir verfolgen unsere Softwareentwicklung in einem einzigen Sonarprojekt mit> 500.000 LOC.
  • Empfehlen Sie ein Upgrade auf SonarQube 5.x?

Antwort

0

aktualisieren

Wiederaufbau der Datenbank-Indizes haben dieses Problem nicht beheben. Bitte überprüfen Sie das Update in der ursprünglichen Frage.

Original-Antwort

So haben wir endlich das Problem aufgespürt wurde durch fragmentierte Datenbank Tabellenindizes verursacht. Nach dem Neuaufbau der Indizes dauert die Abfrage der URL, die im Stacktrace in der ursprünglichen Frage enthalten ist, nur 3 Sekunden. statt mehrere Minuten.

Dies geschieht jedes Mal, wenn die Sonaranalyse ausgeführt wird und Daten in die Datenbank importiert. Das passiert einmal täglich in unserem Setup, und von nun an werden wir die Indizes noch einmal auf den neuesten Stand bringen.

Dies ist eine bessere Problemumgehung als das Aktualisieren des Eclipse-Plugins, aber meiner Meinung nach ist dies auch nur ein Workaround. Eine SonarCube-Analyse sollte den Server nicht in einem Zustand belassen, in dem es einige Minuten dauert, bis die Problemliste abgerufen wird.

Wenn jemand eine bessere Lösung für dieses Problem hat, bitte teilen :)

Verwandte Themen