Jira server throws LexoRankIntegrityException error during reindexing or reranking operations
Ranking operations or re-index might fail and the following stack trace appears in the atlassian-jira.log
or atlassian-greenhopper.log
:
2015-08-28 13:38:51,406 lexorank-executor-thread-0 ERROR ServiceRunner [service.lexorank.balance.LexoRankBalancingService] Expected to find minimum marker row for rank field[id=11960], but found none.
com.atlassian.greenhopper.manager.lexorank.LexoRankIntegrityException: Expected to find minimum marker row for rank field[id=11960], but found none.
at com.atlassian.greenhopper.manager.lexorank.LexoRankDaoImpl.getMinimumMarkerRow(LexoRankDaoImpl.java:372)
at com.atlassian.greenhopper.service.lexorank.balance.LexoRankBalancer.balanceFieldId(LexoRankBalancer.java:199)
at com.atlassian.greenhopper.service.lexorank.balance.LexoRankBalancer.balanceFieldIds(LexoRankBalancer.java:96)
at com.atlassian.greenhopper.service.lexorank.balance.LexoRankScheduledBalanceHandler.run(LexoRankScheduledBalanceHandler.java:60)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
Cause
The AO_60DB71_LEXORANKBALANCER has information relating to a non-existent field on AO_60DB71_LEXORANK table.
Resolution
To resolve this problem, perform the steps listed below:
We strongly recommend to keep a database backup at this point. The next steps will require delete operations and, in case of failures, a rollback might be needed.
- Shutdown JIRA
Run the following query on the database:
SELECT * FROM "AO_60DB71_LEXORANKBALANCER" WHERE "FIELD_ID" = <field_from_error_message>;
If the query above returns no rows where the "FIELD_ID" is the same mentioned on the error message, do not proceed to next steps and inform Atlassian Support!
Run the following statement, replacing the field id accordingly:
DELETE FROM "AO_60DB71_LEXORANKBALANCER" WHERE "FIELD_ID" = <field_from_error_message>;
- Restart JIRA and run a full re-index