Lexorank Integrity Healthcheck Fails Due To "BUCKET" Column
Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Problem
Lexorank Integrity healthcheck fails even though the minimum and maximum markers are present and are correct in the database.
Minimum/Maximum markers are present in database and there are no duplicates.
Diagnosis
Environment
- Known to affect JIRA Software 7.1.x
- The data might have been previously imported from JIRA Cloud, or from a newer version of JIRA Server, ie 7.2.x.
Diagnostic Steps
atlassian-jira.log throws the following lexorank error
2016-10-27 20:47:16,978 http-nio-8080-exec-9 ERROR admin 1247x833x1 16ebkcn 00.000.000.000 /secure/QuickCreateIssue.jspa [c.a.g.service.lexorank.LexoRankIssueEventListener] Expected the first rank row to be of type MAXIMUM_MARKER_ROW. Found row[LexoRankRow{id=10000, fieldId=0, issueId=8, lockHash='9223372036854775807', lockTime=null, rank='null', type=MINIMUM_MARKER_ROW}] com.atlassian.greenhopper.manager.lexorank.LexoRankIntegrityException: Expected the first rank row to be of type MAXIMUM_MARKER_ROW. Found row[LexoRankRow{id=10000, fieldId=0, issueId=8, lockHash='9223372036854775807', lockTime=null, rank='null', type=MINIMUM_MARKER_ROW}] at com.atlassian.greenhopper.manager.lexorank.LexoRankDaoImpl.getMaximumMarkerRowAndPreviousRow(LexoRankDaoImpl.java:373) at com.atlassian.greenhopper.service.lexorank.LexoRankOperation.rankInitially(LexoRankOperation.java:167) at com.atlassian.greenhopper.service.lexorank.LexoRankOperation.execute(LexoRankOperation.java:110) at com.atlassian.greenhopper.manager.lexorank.LexoRankManagerImpl.performRankOperation(LexoRankManagerImpl.java:286) at com.atlassian.greenhopper.manager.lexorank.LexoRankManagerImpl.getRankOrRankInitially(LexoRankManagerImpl.java:86) at com.atlassian.greenhopper.service.lexorank.LexoRankIssueEventListener.doOnIssueEvent(LexoRankIssueEventListener.java:43) at com.atlassian.greenhopper.service.issue.AbstractIssueEventListener.onIssueEvent(AbstractIssueEventListener.java:38) ... 2 filtered
- Notice the values of the columns (in the error message) are not referring to the actual value shown in the database query output screenshot above: id, fieldId, issueId, lockHash, lockTime, rank and type.
- Maximum and minimum marker values are correct in database and there are no duplicates.
Cause
The problem is caused by a column named "BUCKET" that is not supposed to exist in JIRA 7.1.x. - JSW-15128Getting issue details... STATUS
Workaround
Remove the "BUCKET" column.
Always back up your data before performing any modifications to the database. If possible, test any alter, insert, update, or delete SQL commands on a staging server first.
- Create a database backup first
- Stop JIRA
Run the following SQL statement on the JIRA database:
ALTER TABLE "AO_60DB71_LEXORANK" DROP COLUMN "BUCKET";
- Start JIRA
- Re-run the lexorank integrity check once more