-
Bug
-
Resolution: Fixed
-
Medium
-
8.12.0, 8.13.0, 8.12.3, 8.14.1, 8.15.1, 8.16.1, 8.17.0, 8.13.7, 8.16.2, 8.17.1, 8.18.0
-
8.12
-
9
-
Severity 2 - Major
-
44
-
Issue Summary
Misbehaviour of the single issue reindexing API call: triggers issue and all related entities reindex instead of reindexing just the issue.
Steps to Reproduce
Jira is exposing a single issue re-index API:
// com.atlassian.jira.issue.index.IssueIndexManager /** * Reindex an issue (eg. after field updates). */ void reIndex(Issue issue) throws IndexException; // com.atlassian.jira.issue.index.IssueIndexingService /** * Reindex an issue (eg. after field updates). */ void reIndex(final Issue issue) throws IndexException;
According to the javadoc this method should trigger an issue re-index but currently it is also re-indexing all related entities (comments, worklogs):
- bump issue version
- bump this issue comments versions
- bump this issue worklogs versions
- conditionally update local issue, comments, worklogs index (note that for comments and worklogs this will trigger a conditional index update for every comment/worklog separately)
- (Jira DC) send the documents (issue, comments, worklogs) via DBR to all other nodes and conditionally update other nodes indexes
- (Jira DC) add indexing operation (issue, comments, worklogs) to the index replication log
- (Jira DC) other nodes should process the index replication log and conditionally re-index this issue, comment, version
If the issue contains a large amount of related entities this may have serious indexing implication (tens of thousands of index update operations across the cluster instead of a single index update across the cluster).
Expected Results
According to the javadoc this method should trigger an issue re-index only:
- bump issue version
- conditionally update local issue index
- (Jira DC) send the document (issue only) via DBR (with issue only)to all other nodes and conditionally update other nodes indexes
- (Jira DC) add indexing operation (issue only) to the index replication log
- (Jira DC) other nodes should process the index replication log and conditionally re-index (issue only)
Actual Results
Timeouts on the comments and indexing queues may occur.
Workaround
- Change on the API caller to specifically only re-index the issue:
// com.atlassian.jira.issue.index.IssueIndexingService /** * Reindex an issue (eg. after field updates). */ void reIndex(final Issue issue, final IssueIndexingParams issueIndexingParams) throws IndexException; // where issueIndexingParams = INDEX_ISSUE_ONLY | INDEX_ISSUE_WITH_HISTORY
- Archive issue with "large" number of related entities
- In version 8.16.2, 8.17.1, >=8.18.0 one can set a flag to disable this behaviour:
-Dcom.atlassian.jira.issue.reindex.legacy.mode=false
With this flag the single issue re-index API:
// com.atlassian.jira.issue.index.IssueIndexManager /** * Reindex an issue (eg. after field updates). */ void reIndex(Issue issue) throws IndexException; // com.atlassian.jira.issue.index.IssueIndexingService /** * Reindex an issue (eg. after field updates). */ void reIndex(final Issue issue) throws IndexException;
is re-indexing the issue only.
This should improve the stability of the whole Jira DC cluster.
- is related to
-
JRASERVER-72045 IndexException: Wait attempt timed out - waited 30000 milliseconds caused by background indexing tasks
- Closed
- mentioned in
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
- relates to
-
DBR-268 Loading...