SonarQube を使っていたら、とある構成変更作業以降から (伏線)、解析リクエストは届くのに実行されず、失敗してしまうという現象が頻発するようになってしまっていました。
こんな具合です。
数回に一度しか、解析リクエストを正常に処理できなくなっていました。今回はこの事象が発生する条件と、その解消方法をメモしておきます。
環境
- Ubuntu 14.04 LTS
- Java 8
- SonarQube 6.0
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
$ java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
事象
冒頭でも書いておりますが、おさらいです。
例えば以下のように、Maven プラグインを使用して解析リクエストを投げる場合なんかに、発生していました。なお、今回使ったプラグインは org.sonarsource.scanner.maven:sonar-maven-plugin:3.1.1
です。
$ mvn clean test sonar:sonar -U -Dmaven.test.failure.ignore=true
すると、Maven の実行自体は、SUCCESS
で完了するものの、実際に、SonarQube の [Background Tasks] を確認して見ると、Failed
となっている、というものです。
原因と解消方法
Stackoverflow でも、同様の事象が報告されていました。
そして、これの対処方法を示唆するコメントが以下。
Can you make sure that you don't have 2 SonarQube instances that point to the same DB? – Fabrice - SonarSource Team Jan 14 at 16:13
どうやら、2つ以上の SonarQube インスタンスから、同一の DB インスタンスを参照してはならないようです。
わたしの場合は、まさしくこれをやってしまっていました。そこで、不要になっていた片方の SonarQube インスタンスを停止してみたところ、事象はすべて解消し、現在快調に動作しております。
このように、構成見直し以降は解析が Failed
とならなくなりました。