0

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 インスタンスが多くの問題を自動割り当てできません。いくつかの自動割り当てが以前に成功したため、これがいつ/どのように壊れたのかを把握している最中です。

これはクエリまたはデータのエラーですか? どうにかしてこの問題を回避できますか?

4

1 に答える 1