Uploaded image for project: 'Jira Software Data Center'
  1. Jira Software Data Center
  2. JSWSERVER-13403

Pre 6.4 ranking can break operations in JIRA Software 6.4+

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Low
    • None
    • 7.0.10, 7.2.6
    • None

    Description

      Summary

      In certain situations it's possible for old, broken data from a pre 6.4 instance of Agile will affect bulk move operations in 6.4+, LexoRank JIRA Software.

      Steps to Reproduce

      Using a broken data-set, edit an issue type scheme of a project to use a different scheme.

      Expected Results

      The issue type scheme is migrated as expected.

      Actual Results

      The migration fails with the below exception:

      2016-03-08 19:32:52,901 http-nio-8080-exec-25 ERROR      [o.a.c.c.C.[.[localhost].[/].[action]] Servlet.service() for servlet [action] in context with path [] threw exception [com.atlassian.greenhopper.service.rank.RankException: Multiple heads found in rank chain: issueIDs [[12171 r0 no prev n12172], [16271 r0 no prev no next]] have no parent link. Please update the rank table and ensure that there is exactly one issue that has no child and exactly one that has no parent.] with root cause
      com.atlassian.greenhopper.service.rank.RankException: Multiple heads found in rank chain: issueIDs [[12171 r0 no prev n12172], [16271 r0 no prev no next]] have no parent link. Please update the rank table and ensure that there is exactly one issue that has no child and exactly one that has no parent.
      	at com.atlassian.greenhopper.service.rank.RankIndexBuilder.validate(RankIndexBuilder.java:166)
      	at com.atlassian.greenhopper.service.rank.RankIndexBuilder.build(RankIndexBuilder.java:85)
      	at com.atlassian.greenhopper.service.rank.RankIndexServiceImpl$RankIndexSupplier.get(RankIndexServiceImpl.java:157)
      	at com.atlassian.greenhopper.service.rank.RankIndexServiceImpl$RankIndexSupplier.get(RankIndexServiceImpl.java:133)
      	at com.google.common.base.Suppliers$MemoizingSupplier.get(Suppliers.java:125)
      	at com.atlassian.greenhopper.service.rank.RankIndexServiceImpl.getIndex(RankIndexServiceImpl.java:130)
      	at com.atlassian.greenhopper.service.rank.RankIndexServiceImpl.fetchCreate(RankIndexServiceImpl.java:100)
      	at com.atlassian.greenhopper.service.rank.RankIndexServiceImpl.getIssuePosition(RankIndexServiceImpl.java:70)
      	at com.atlassian.greenhopper.customfield.rank.RankCFType.getValueFromIssue(RankCFType.java:43)
      	at com.atlassian.jira.issue.fields.CustomFieldImpl.getValue(CustomFieldImpl.java:386)
      	at com.atlassian.jira.issue.fields.CustomFieldImpl.hasValue(CustomFieldImpl.java:1192)
      	at com.atlassian.jira.bulkedit.operation.BulkMoveOperationImpl.setRemovedFields(BulkMoveOperationImpl.java:1060)
      	at com.atlassian.jira.bulkedit.operation.BulkMoveOperationImpl.finishChooseContext(BulkMoveOperationImpl.java:524)
      	at com.atlassian.jira.bulkedit.operation.BulkMoveOperationImpl.chooseContextNoValidate(BulkMoveOperationImpl.java:382)
      	at com.atlassian.jira.bulkedit.operation.BulkMigrateOperation.chooseContextNoValidate(BulkMigrateOperation.java:111)
      	at com.atlassian.jira.web.action.admin.issuetypes.MigrateIssueTypes.doChooseContext(MigrateIssueTypes.java:81)
      	... 3 filtered
      	at java.lang.reflect.Method.invoke(Method.java:497)
      	at webwork.util.InjectionUtils$DefaultInjectionImpl.invoke(InjectionUtils.java:70)
      	at webwork.util.InjectionUtils.invoke(InjectionUtils.java:56)
      	... 2 filtered
      	at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:63)
      	... 7 filtered
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
      	... 50 filtered
      	at com.atlassian.greenhopper.jira.filters.ClassicBoardRouter.doFilter(ClassicBoardRouter.java:59)
      	... 151 filtered
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
      	at java.lang.Thread.run(Thread.java:745)
      

      Notes

      This appears to be caused by problematic data in a previous ranking field, that is no longer used.

      Workaround

      1. Backup the database.
      2. Delete the Global Rank (obsolete) fields. They may need unlocking as per How to unlock a Locked field.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              dcurrie@atlassian.com Dave C
              Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated: