Uploaded image for project: 'Jira Data Center'
  1. Jira Data Center
  2. JRASERVER-72027

Moving a sprint on a board at times returns an error about inconsistent state of data due to duplicated Sequence

XMLWordPrintable

      Issue Summary

      When trying to move Sprints up and down the board, at times the following error is shown
      Jira Software cannot swap these sprints as the data is in an inconsistent state. Please contact our Support team to get assistance.

      Steps to Reproduce

      1. This is not consistently reproducible in all instances
      2. But in the affected sites, you only need to browse to the Backlog page with multiple Sprints
      3. Try to move the sprints up or down

      Expected Results

      The sprints move accordingly

      Actual Results

      Following errors on atlassian-greenhopper.log

      2020-12-07 14:28:58,191 http-nio-8080-exec-3774 WARN xxxxx@xxxxx.com 868x350428x1 wavksn 172.18.30.100,127.0.0.1 /rest/greenhopper/1.0/sprint/835/swap [greenhopper.service.sprint.SprintManagerImpl] Sprint[id=835,name=K-MLE (12/21 - 1/8*),seq=819] and Sprint[id=627,name=Refining,seq=819] have the same sequence number. This will cause incorrect behaviour and should be fixed manually in the database.
      2020-12-07 14:28:58,192 http-nio-8080-exec-3774 INFO xxxxx@xxxxx.com 868x350428x1 wavksn 172.18.30.100,127.0.0.1 /rest/greenhopper/1.0/sprint/835/swap [web.rapid.sprint.SprintResource] GreenHopper REST method failed with SC = 409 - JiraCopiedConflictWebException
      2020-12-07 14:28:58,192 http-nio-8080-exec-3774 INFO xxxxx@xxxxx.com 868x350428x1 wavksn 172.18.30.100,127.0.0.1 /rest/greenhopper/1.0/sprint/835/swap [web.rapid.sprint.SprintResource] JiraCopiedRestErrorCollection[errorMessages=[Jira Software cannot swap these sprints as the data is in an inconsistent state. Please contact our Support team to get assistance.],errors={}]
      2020-12-07 14:29:03,566 http-nio-8080-exec-3947 WARN xxxxx@xxxxx.com 869x350543x1 wavksn 172.18.30.100,127.0.0.1 /rest/greenhopper/1.0/sprint/835/swap [greenhopper.service.sprint.SprintManagerImpl] Sprint[id=835,name=K-MLE (12/21 - 1/8*),seq=819] and Sprint[id=627,name=Refining,seq=819] have the same sequence number. This will cause incorrect behaviour and should be fixed manually in the database.
      2020-12-07 14:29:03,566 http-nio-8080-exec-3947 INFO xxxxx@xxxxx.com 869x350543x1 wavksn 172.18.30.100,127.0.0.1 /rest/greenhopper/1.0/sprint/835/swap [web.rapid.sprint.SprintResource] GreenHopper REST method failed with SC = 409 - JiraCopiedConflictWebException
      2020-12-07 14:29:03,567 http-nio-8080-exec-3947 INFO xxxxx@xxxxx.com 869x350543x1 wavksn 172.18.30.100,127.0.0.1 /rest/greenhopper/1.0/sprint/835/swap [web.rapid.sprint.SprintResource] JiraCopiedRestErrorCollection[errorMessages=[Jira Software cannot swap these sprints as the data is in an inconsistent state. Please contact our Support team to get assistance.],errors={}]
      2020-12-07 14:29:07,919 http-nio-8080-exec-3932 WARN xxxxx@xxxxx.com 869x350601x2 wavksn 172.18.30.100,127.0.0.1 /rest/greenhopper/1.0/sprint/835/swap [greenhopper.service.sprint.SprintManagerImpl] Sprint[id=835,name=K-MLE (12/21 - 1/8*),seq=819] and Sprint[id=627,name=Refining,seq=819] have the same sequence number. This will cause incorrect behaviour and should be fixed manually in the database.
      2020-12-07 14:29:07,919 http-nio-8080-exec-3932 INFO xxxxx@xxxxx.com 869x350601x2 wavksn 172.18.30.100,127.0.0.1 /rest/greenhopper/1.0/sprint/835/swap [web.rapid.sprint.SprintResource] GreenHopper REST method failed with SC = 409 - JiraCopiedConflictWebException
      

      This happens since the Sequence which has been associated with the Sprint gets duplicated in the database.

      Note

      Table AO_60DB71_SPRINT structure:

                                            Table "public.AO_60DB71_SPRINT"
           Column      |          Type          |                            Modifiers
      -----------------+------------------------+-----------------------------------------------------------------
       CLOSED          | boolean                | not null
       COMPLETE_DATE   | bigint                 |
       END_DATE        | bigint                 |
       ID              | bigint                 | not null default nextval('"AO_60DB71_SPRINT_ID_seq"'::regclass)
       NAME            | character varying(255) | not null
       RAPID_VIEW_ID   | bigint                 |
       SEQUENCE        | bigint                 |
       STARTED         | boolean                |
       START_DATE      | bigint                 |
       GOAL            | text                   |
       ACTIVATED_DATE  | bigint                 |
       AUTO_START_STOP | boolean                |
      Indexes:
          "AO_60DB71_SPRINT_pkey" PRIMARY KEY, btree ("ID")
          "index_ao_60db71_spr1457658269" btree ("SEQUENCE")
      

      Workaround

      Set one of the duplicated SEQUENCE values to NULL. Sprint will loose its position, but this will solve the problem, so you can update Sprint position later.

      1. Check AO_60DB71_SPRINT table for duplicated SEQUENCE values (if any)
        select "SEQUENCE",COUNT("SEQUENCE") from "AO_60DB71_SPRINT" where "SEQUENCE" is not NULL GROUP BY "SEQUENCE" HAVING COUNT("SEQUENCE") > 1;
         SEQUENCE | count
        ----------+-------
                3 |     2
        
      2. Load rows with duplicated SEQUENCE values
        select * from "AO_60DB71_SPRINT" where "SEQUENCE" = <SEQUENCE_from_previous_select>;
         CLOSED | COMPLETE_DATE |   END_DATE    | ID |     NAME     | RAPID_VIEW_ID | SEQUENCE | STARTED |  START_DATE   | GOAL | ACTIVATED_DATE | AUTO_START_STOP
        --------+---------------+---------------+----+--------------+---------------+----------+---------+---------------+------+----------------+-----------------
         t      | 1441893727652 | 1442494620000 |  3 | Sprint 1     |             1 |        3 | t       | 1441889842495 |      |                |
         t      | 1453826662861 | 1449488100000 |  5 | Sprint 2     |             1 |        3 | t       | 1447673722725 |      |                |
        
      3. Set SEQUENCE in one of the rows to NULL
        update "AO_60DB71_SPRINT" set "SEQUENCE" = NULL where "ID"=<ID_from_previous_select>;
        

              Unassigned Unassigned
              jmartinelli Jeferson Martinelli (Inactive)
              Votes:
              6 Vote for this issue
              Watchers:
              7 Start watching this issue

                Created:
                Updated: