MSSQL バックエンドを使用して Windows で SonarQube 5.3 を実行しています。
新しい問題を作成するとき、SonarQube は ElasticSearch ユーザー インデックスにクエリを実行して、問題を提示する行の「git Blame」情報の作成者ログインを取得します。
以下は、/server/sonar-server/src/main/java/org/sonar/server/computation/issue/IssueAssigner.java で発生します。
=> 「git Blame」情報は、影響を受ける行の作成者を返します。私の例では (匿名化されています):
steve smith@ca5553f7-9c36-c34d-916b-b330600317e9
=> この値は ScmAccountToUser で検索され、ElasticSearch インデックス "users" を遅延クエリします。ES クエリを出力するためにデバッグ出力を追加しました。
{
"size": 3,
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"bool": {
"must": {
"term": {
"active": true
}
},
"should": [
{
"term": {
"login": "steve smith@ca5553f7-9c36-c34d-916b-b330600317e9"
}
},
{
"term": {
"email": "steve smith@ca5553f7-9c36-c34d-916b-b330600317e9"
}
},
{
"term": {
"scmAccounts": "steve smith@ca5553f7-9c36-c34d-916b-b330600317e9"
}
}
]
}
}
}
}
}
このクエリは 0 件の結果を返します。
対照的に、インデックス全体を列挙すると、通常はこのユーザーと一致するはずのヒットが得られます。
{ -
"took": 4,
"timed_out": false,
"_shards": { -
"total": 5,
"successful": 5,
"failed": 0
},
"hits": { -
"total": 39,
"max_score": 1,
"hits": [ -
{ -
// snip
},
// snip
{ -
"_index": "users",
"_type": "user",
"_id": "steve.smith",
"_score": 1,
"_source": { -
"createdAt": 1442988141642,
"name": "Steve Smith",
"active": true,
"login": "steve.smith",
"scmAccounts": [ -
"
",
"steve smith@ca5553f7-9c36-c34d-916b-b330600317e9
",
"steve.smith@ca5553f7-9c36-c34d-916b-b330600317e9
"
],
"email": "steve.smith@globodex.ch",
"updatedAt": 1450088380632
}
},
// snip
]
}
}
この問題により、現在、SonarQube インスタンスが多くの問題を自動割り当てできません。いくつかの自動割り当てが以前に成功したため、これがいつ/どのように壊れたのかを把握している最中です。
これはクエリまたはデータのエラーですか? どうにかしてこの問題を回避できますか?