SQL equivalents for Jira server's workflow integrity checks

お困りですか?

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

コミュニティに質問

プラットフォームについて: サーバーと Data Center のみ。この記事は、サーバーおよび Data Center プラットフォームのアトラシアン製品にのみ適用されます。

症状

ワークフローの整合性チェッカーをブラウザで実行するとタイムアウトが発生し、実行できない。

原因

インスタンスが非常に大きく、タイムアウトまでの時間内にチェックを完了することができません。進捗バーを表示するように修正する旨の機能リクエストを JRA-17593 - Getting issue details... STATUS で追跡しています。

回避策

ワークフローの SQL チェックをデータベースに対して手動で実行することで完了できます。

データベースの変更を行う場合は 必ず事前にバックアップを取得してください。可能な場合はテスト サーバーで変更を試すことをおすすめします。

Workflow entry states are correct

  1. この手順は、 JRA-4241 - Getting issue details... STATUS の影響を受けている、無効なステータスを持つワークフローがないかどうかを確認します。

    SELECT jiraissue.id issue_id,
           jiraissue.workflow_id, 
           os_wfentry.* 
    FROM   jiraissue
    JOIN   os_wfentry
    ON     jiraissue.workflow_id = os_wfentry.id
    WHERE  os_wfentry.state IS NULL 
    OR     os_wfentry.state = 0; 
  2. これが次の例のようにレコードを返す場合、有効化するためにデータベースを更新する必要があります。

     issue_id | workflow_id |  id   |             name             | initialized | state
    ----------+-------------+-------+------------------------------+-------------+-------
        10023 |       10023 | 10023 | jdg-workflow-2-1377070570282 |             |     0
  3. To fix this example, run the following SQL - we need to update the state to be 1 based on the workflow_id. The workflow_id is actually os_wfentry.id

    UPDATE os_wfentry
    SET state = 1
    WHERE id IN (SELECT os_wfentry.id
                 FROM jiraissue
                          JOIN os_wfentry
                               ON jiraissue.workflow_id = os_wfentry.id
                 WHERE os_wfentry.state IS NULL
                    OR os_wfentry.state = 0);

Jira Issues with Null Status

  1. この手順は、 JRA-7428 - Getting issue details... STATUS の影響を受けている、無効な課題ステータスを持つ課題がないかどうかを確認します。

    SELECT jiraissue.id, 
           jiraissue.issuenum, 
           jiraissue.issuestatus, 
           jiraissue.project, 
           jiraissue.issuetype, 
           currentStep.step_id 
    FROM   jiraissue jiraissue 
    JOIN   os_currentstep currentStep 
    ON     jiraissue.workflow_id = currentStep.entry_id 
    WHERE  jiraissue.issuestatus IS NULL;


  2. 次のように修正できます。

    UPDATE jiraissue 
    SET    issuestatus = (SELECT state 
                          FROM   os_wfentry 
                          WHERE  id = workflow_id) 
    WHERE  issuestatus IS NULL; 


Workflow current step entries

  1. This will check if any issues have an invalid workflow id, as from  JRASERVER-4539 - Getting issue details... STATUS :

    select concat(concat(P.pkey,'-'),I.issuenum)
    from jiraissue I
    join project P on P.id = I.project
    left join os_currentstep C on C.entry_id = I.workflow_id
    where C.id is null;


  2. Running the query below will generate the inserts for all issues missing the valid workflow step entry:

    select concat(concat('insert into os_currentstep values ((select max(id)+1 from os_currentstep),',workflow_id),',1,0,'''',now(),null,null,''open'',null)') from jiraissue where workflow_id not in (select entry_id from os_currentstep); 
  3. すべての結果をコピーし、Insert 文を実行して不足している行を追加します。

最終更新日: 2023 年 2 月 7 日

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

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