SQL equivalents for Jira server's workflow integrity checks
プラットフォームについて: サーバーと Data Center のみ。この記事は、サーバーおよび Data Center プラットフォームのアトラシアン製品にのみ適用されます。
症状
ワークフローの整合性チェッカーをブラウザで実行するとタイムアウトが発生し、実行できない。
原因
インスタンスが非常に大きく、タイムアウトまでの時間内にチェックを完了することができません。進捗バーを表示するように修正する旨の機能リクエストを - JRA-17593Getting issue details... STATUS で追跡しています。
回避策
ワークフローの SQL チェックをデータベースに対して手動で実行することで完了できます。
データベースの変更を行う場合は 必ず事前にバックアップを取得してください。可能な場合はテスト サーバーで変更を試すことをおすすめします。
Workflow entry states are correct
この手順は、 - JRA-4241Getting 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;
これが次の例のようにレコードを返す場合、有効化するためにデータベースを更新する必要があります。
issue_id | workflow_id | id | name | initialized | state ----------+-------------+-------+------------------------------+-------------+------- 10023 | 10023 | 10023 | jdg-workflow-2-1377070570282 | | 0
To fix this example, run the following SQL - we need to update the
state
to be 1 based on theworkflow_id
. Theworkflow_id
is actuallyos_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
この手順は、 - JRA-7428Getting 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;
次のように修正できます。
UPDATE jiraissue SET issuestatus = (SELECT state FROM os_wfentry WHERE id = workflow_id) WHERE issuestatus IS NULL;
Workflow current step entries
This will check if any issues have an invalid workflow id, as from - JRASERVER-4539Getting 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;
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);
- すべての結果をコピーし、Insert 文を実行して不足している行を追加します。