How to use Jira's index analyzer to fix index inconsistencies
プラットフォームについて: Data Center - この記事は、Data Center プラットフォームのアトラシアン製品に適用されます。
このナレッジベース記事は製品の Data Center バージョン用に作成されています。Data Center 固有ではない機能の Data Center ナレッジベースは、製品のサーバー バージョンでも動作する可能性はありますが、テストは行われていません。サーバー*製品のサポートは 2024 年 2 月 15 日に終了しました。サーバー製品を利用している場合は、アトラシアンのサーバー製品のサポート終了のお知らせページにて移行オプションをご確認ください。
*Fisheye および Crucible は除く
要約
In Jira 8.4, the index analyzer endpoint (/rest/indexanalyzer/1/state?maxResults=XXXX
implemented in JRASERVER-69942 - Getting issue details... STATUS ) can bring us the issues in the following states:
- Index orphan - issue present only in index, should be removed
- DB orphan - issue present only in database, should be added to index
- Outdated issue - if issue in index is not the same as in database
- OK issue - if issues is the same in index and database
- Archived issue - if issue is archived
In later versions, a healing endpoint (/
rest/indexanalyzer/1/heal
) was introduced, so we can fix the issues automatically: JRASERVER-76343 - Getting issue details... STATUS
The indexanalyzer
endpoint runs a per-node index analysis/fix. For full analysis or healing results, the endpoint should be called in each node.
環境
Jira 9.12.0, 9.11.1, 8.20.27, 9.4.11
診断
As an example, let's suppose a Jira node has:
- One issue missing from the index (DB orphan)
- One deleted issue present only in the index/searches (index orphan)
- One outdated issue.
If we call the index analyzer endpoint (/rest/indexanalyzer/1/state?maxResults=10
), we'll get a result like this:
{
"indexOrphans": [
{
"issueId": 10101,
"lastUpdated": 1528706295000
}
],
"dbOrphans": [
{
"issueId": 10306,
"lastUpdated": 1529308219425
}
],
"outdatedIssueData": [
{
"issueId": 10102,
"dbLastUpdated": 1528706225000,
"indexLastUpdated": 1528706405655
}
],
"okCount": 72,
"outdatedCount": 1,
"indexOrphansCount": 1,
"dbOrphansCount": 1,
"lastAnalyzeTimestamp": 1529308274757,
"indexHealth": 97.297295
}
原因
There could be multiple causes for such issues, like:
- Replication problems (most likely);
- Transaction rollback issues in post-functions;
- Direct DB manipulation
ソリューション
Call a POST request to the endpoint /
rest/indexanalyzer/1/heal
The maxResults
input defaults to 100, and allows a maximum of 1000 issues to be fixed.
Here's an output example in which 20 issues shouldn't be in the index:
{
"analyzeBeforeResult": {
"indexOrphans": [
{
"issueId": 10001,
"lastUpdated": 1710515196000
},
{
"issueId": 10003,
"lastUpdated": 1710515195000
},
{
"issueId": 10004,
"lastUpdated": 1710515198000
},
{
"issueId": 10005,
"lastUpdated": 1710515195000
},
{
"issueId": 10006,
"lastUpdated": 1705434794000
},
{
"issueId": 10007,
"lastUpdated": 1710515196000
},
{
"issueId": 10200,
"lastUpdated": 1710515196000
},
{
"issueId": 10201,
"lastUpdated": 1710515194000
},
{
"issueId": 10009,
"lastUpdated": 1710515195000
},
{
"issueId": 10010,
"lastUpdated": 1705099512000
},
{
"issueId": 10202,
"lastUpdated": 1710515196000
},
{
"issueId": 10011,
"lastUpdated": 1705176612000
},
{
"issueId": 10203,
"lastUpdated": 1710515198000
},
{
"issueId": 10204,
"lastUpdated": 1710528950000
},
{
"issueId": 10015,
"lastUpdated": 1710515194000
},
{
"issueId": 10016,
"lastUpdated": 1710515198000
},
{
"issueId": 10400,
"lastUpdated": 1710515057000
},
{
"issueId": 10023,
"lastUpdated": 1705437162000
},
{
"issueId": 10100,
"lastUpdated": 1705951944000
},
{
"issueId": 10101,
"lastUpdated": 1710515198000
}
],
"dbOrphans": [],
"outdatedIssueData": [],
"okCount": 12,
"outdatedCount": 0,
"indexOrphansCount": 20,
"dbOrphansCount": 0,
"lastAnalyzeTimestamp": 1710788040307,
"indexHealth": 100.0
},
"analyzeBeforeTimeMillis": 13,
"healerResult": {
"reindexedDbOrphansSuccessful": {
"count": 0,
"ids": []
},
"reindexedDbOrphansFailed": {
"count": 0,
"ids": []
},
"reindexedOutdatedIssuesSuccessful": {
"count": 0,
"ids": []
},
"reindexedOutdatedIssuesFailed": {
"count": 0,
"ids": []
},
"deindexedIndexOrphansSuccessful": {
"count": 20,
"ids": [
10001,
10003,
10004,
10005,
10006,
10007,
10200,
10201,
10009,
10010,
10202,
10011,
10203,
10204,
10015,
10016,
10400,
10023,
10100,
10101
]
},
"deindexedIndexOrphansFailed": {
"count": 0,
"ids": []
}
},
"healTimeMillis": 53,
"analyzeAfterResult": {
"indexOrphans": [],
"dbOrphans": [],
"outdatedIssueData": [],
"okCount": 12,
"outdatedCount": 0,
"indexOrphansCount": 0,
"dbOrphansCount": 0,
"lastAnalyzeTimestamp": 1710788040387,
"indexHealth": 100.0
},
"analyzeAfterTimeMillis": 25
}
Here's the atlassian-jira.log
file output in the node:
2024-03-18 15:54:00,308-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Reindexing 0 of 0 issues missing from the index
2024-03-18 15:54:00,310-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Done reindexing issues missing from the index
2024-03-18 15:54:00,310-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Reindexing 0 of 0 issues outdated in the index
2024-03-18 15:54:00,310-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Done reindexing issues outdated in the index
2024-03-18 15:54:00,310-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing 20 of 20 issues absent from the database
2024-03-18 15:54:00,310-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10001
2024-03-18 15:54:00,346-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10003
2024-03-18 15:54:00,348-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10004
2024-03-18 15:54:00,349-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10005
2024-03-18 15:54:00,349-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10006
2024-03-18 15:54:00,349-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10007
2024-03-18 15:54:00,350-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10200
2024-03-18 15:54:00,351-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10201
2024-03-18 15:54:00,352-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10009
2024-03-18 15:54:00,352-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10010
2024-03-18 15:54:00,352-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10202
2024-03-18 15:54:00,354-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10011
2024-03-18 15:54:00,354-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10203
2024-03-18 15:54:00,355-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10204
2024-03-18 15:54:00,356-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10015
2024-03-18 15:54:00,356-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10016
2024-03-18 15:54:00,356-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10400
2024-03-18 15:54:00,356-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10023
2024-03-18 15:54:00,357-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10100
2024-03-18 15:54:00,358-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Deindexing issue, issueId=10101
2024-03-18 15:54:00,360-0300 http-nio-49122-exec-15 url: /j9122/rest/indexanalyzer/1/heal; user: agandelman INFO agandelman 954x207x1 3vi0d2 0:0:0:0:0:0:0:1 /rest/indexanalyzer/1/heal [c.a.j.p.indexanalyzer.impl.DefaultIndexHealer] Done deindexing issues absent from the database