Fixing Workflows with Duplicate occurrence of action

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

問題

  • Unable to view or edit workflows
  • Navigating to the Statuses page throws a "Sorry, we had some technical problems during your last operation."
  • Workflows section displays the error:

"The JIRA server was contacted but has returned an error response. We are unsure of the result of this operation."

The following appears in the JIRA log:

Error converting XML to workflow descriptor.: root cause: Duplicate occurance of action ID 131 found in step 7

原因

For unknown reasons a JIRA workflow became corrupt and contains a duplicate action. The XML can't be parsed correctly and the Workflows section fails to be displayed.

回避策

Manually remove the duplicate action from the database.

  1. Find the affected workflow:
    from the Error message in the logs, use the ID number to search in the database for workflow that has 2 sets of the same action:

    SELECT id, workflowname FROM jiraworkflows WHERE descriptor like '%<action id="<ID>"%<action id="<ID>"%';

    should return only one workflow. You'll use the id returned in step 5

  2. Extract the descriptor:

    Copy (SELECT descriptor FROM jiraworkflows WHERE descriptor like '%<action id="<ID>"%<action id="<ID>"%') to '/tmp/desc.csv' DELIMITER ',' QUOTE '''' CSV;

    will create a /tmp/desc.csv file with the workflow XML

  3. Manually search for the step mentioned in the Error and it will contain 2 action IDs exactly the same.

    expand to see example...
     <step id="7" name="App Approved">
          <meta name="jira.status.id">12104</meta>
          <actions>
    
            .... some actions ...
    
            <action id="131" name="Cancel">
              <meta name="jira.description"></meta>
              <meta name="jira.fieldscreen.id"></meta>
              <results>
                <unconditional-result old-status="null" status="null" step="3">
                  <post-functions>
                    <function type="class">
                      <arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
                    </function>
                    <function type="class">
                      <arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
                    </function>
                    <function type="class">
                      <arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
                    </function>
                    <function type="class">
                      <arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
                    </function>
                    <function type="class">
                      <arg name="eventTypeId">13</arg>
                      <arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
                    </function>
                  </post-functions>
                </unconditional-result>
              </results>
            </action>
            <action id="131" name="Cancel">
              <meta name="jira.description"></meta>
              <meta name="jira.fieldscreen.id"></meta>
              <results>
                <unconditional-result old-status="null" status="null" step="3">
                  <post-functions>
                    <function type="class">
                      <arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
                    </function>
                    <function type="class">
                      <arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
                    </function>
                    <function type="class">
                      <arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
                    </function>
                    <function type="class">
                      <arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
                    </function>
                    <function type="class">
                      <arg name="eventTypeId">13</arg>
                      <arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
                    </function>
                  </post-functions>
                </unconditional-result>
              </results>
            </action>
          </actions>
        </step>
  4. Remove one ID from <action id= to </action>
  5. Update the Workflow in the DB

    データベースの変更を行う場合は必ず事前にバックアップを取得してください。可能な場合は、まずステージング サーバーで SQL コマンドの変更、挿入、更新、または削除を行うようにします。

    UPDATE jiraworkflows SET descriptor = '<paste here the full edited XML>' where id = '<database workflow id returned from step 1>';



最終更新日 2020 年 9 月 10 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.