Я запускаю SonarQube 5.3 в Windows с серверной частью MSSQL.
При создании новых задач SonarQube запрашивает свой пользовательский индекс ElasticSearch, чтобы получить логин автора для информации «git виноват» в строке, представляющей проблему.
В /server/sonar-server/src/main/java/org/sonar/server/computation/issue/IssueAssigner.java происходит следующее:
=> Информация «git виноват» возвращает автора затронутой строки, в моем примере (анонимно):
steve smith@ca5553f7-9c36-c34d-916b-b330600317e9
=> Это значение ищется в ScmAccountToUser, который лениво запрашивает индекс «пользователей» ElasticSearch. Я добавил некоторые отладочные данные для печати запроса 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": "[email protected]",
"updatedAt": 1450088380632
}
},
// snip
]
}
}
Эта проблема в настоящее время не позволяет моему экземпляру SonarQube автоматически назначать множество проблем. Я нахожусь в процессе выяснения, когда и как это сломалось, так как некоторые автоматические назначения ранее были успешными.
Это ошибка в запросе или в данных? Можно ли как-то обойти эту проблему?
scmAccounts
? Если это не строковое полеnot_analyzed
, то причина в этом. - person Val   schedule 22.04.2016