Jira の自動化ルールで、ワークフローアクションが欠落した破損した課題が作成される

プラットフォームについて: Data Center のみ。 - この記事は、 Data Center プラットフォーム

この KB は Data Center バージョンの製品用に作成されています。Data Center 固有ではない機能の Data Center KB は、製品のサーバー バージョンでも動作する可能性はありますが、テストは行われていません。 Server* 製品のサポートは 2024 年 2 月 15 日に終了しました。Server 製品を実行している場合は、 アトラシアン Server サポート終了 のお知らせにアクセスして、移行オプションを確認してください。

*Fisheye および Crucible は除く

要約

Jira の自動化監査ログに従って Jira の自動化経由の課題の作成がランダムに失敗するが、ワークフロー アクションが欠落した破損した課題が引き続き作成される。

この問題はランダムな課題で常に発生するとは限りませんが、Jira の自動化を使用して複数の課題が作成されると、この問題が観察されることがあります。

診断

問題が発生したときに、atlassian-jira.log で次のエラーが見つかります。

1 2 3 4 5 6 7 8 9 10 SdOffThreadEventJobRunner:thread-2 ERROR /servicedesk/customer/portal/1/create/67 [c.a.s.internal.util.SafeRunner] Unable to run event handler onIssueChangedEvent: IssueChangedEventImpl{changeItems=[com.atlassian.jira.issue.history.ChangeItemBean@29e2cbc3[fieldType=jira,field=assignee,from=<null>,fromString=<null>,to=JIRAUSER11226,toString= ,created=], author=Optional, comment=Optional.empty, issue=ITSMSD-29654, eventTime=, sendMail=true, spanningOperation=null} com.querydsl.core.NonUniqueResultException: Only one result is allowed for fetchOne calls at com.querydsl.core.support.FetchableQueryBase.uniqueResult(FetchableQueryBase.java:64) at com.querydsl.sql.ProjectableSQLQuery.fetchOne(ProjectableSQLQuery.java:398) at com.atlassian.jira.versioning.VersioningDao.lambda$getCurrentVersion$6(VersioningDao.java:152) at com.atlassian.jira.database.DefaultQueryDslAccessor.lambda$executeQuery$0(DefaultQueryDslAccessor.java:68) at com.atlassian.jira.database.DatabaseAccessorImpl.runInTransaction(DatabaseAccessorImpl.java:116) at com.atlassian.jira.database.DefaultQueryDslAccessor.executeQuery(DefaultQueryDslAccessor.java:67) at com.atlassian.jira.versioning.VersioningDao.getCurrentVersion(VersioningDao.java:147) at com.atlassian.jira.versioning.EntityVersioningManagerImpl.lambda$getIssueVersion$3(EntityVersioningManagerImpl.java:122)

issue_version,OS_HISTORYSTEP_prev,OS_HISTORYSTEP テーブルには、同じタイムスタンプで同じ課題バージョンと履歴ステップを持つ複数の行があります

1 2 3 4 5 6 7 8 9 10 select * from issue_version where issue_id in (SELECT issue_id FROM issue_version GROUP BY issue_id HAVING COUNT(*) > 1); select * from OS_HISTORYSTEP where id in (SELECT id FROM OS_HISTORYSTEP GROUP BY id having count(*) > 1); select * from OS_HISTORYSTEP_prev where id in (SELECT id FROM OS_HISTORYSTEP_prev GROUP BY id having count(*) > 1);

注意: 上記のクエリは PostgreSQL データベースで有効です。その他のデータベースでは、テーブルが存在するスキーマが異なる場合があります。必要に応じてクエリを調整してください。

以下のクエリを実行して、主キー インデックス pk_issue_version、pk_os_historystep_prev、pk_os_historystep が存在するかどうかを確認します

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 SELECT * FROM pg_indexes WHERE schemaname = 'public' AND tablename = 'issue_version' ORDER BY tablename, indexname; SELECT * FROM pg_indexes WHERE schemaname = 'public' AND tablename = 'OS_HISTORYSTEP' ORDER BY tablename, indexname; SELECT * FROM pg_indexes WHERE schemaname = 'public' AND tablename = 'OS_HISTORYSTEP_prev' ORDER BY tablename, indexname;

原因

主キー インデックス

pk_issue_version

pk_os_historystep_prev

pk_os_historystep

上記のすべての表が存在しなかったため、上記の表に複数の重複したエントリが作成されました。主キー インデックスがない理由は不明です。

ソリューション

重複を削除するには複雑な手順が必要なため、チケットを登録してアトラシアンに問い合わせることをお勧めします。

  • データベースのバックアップを取ります

  • Jira をシャットダウンします。

  • 以下のクエリを実行して、重複したエントリを削除します

1 2 3 4 5 6 7 8 9 10 11 12 13 14 DELETE FROM issue_version T1 USING issue_version T2 WHERE T1.ctid < T2.ctid -- delete the older versions AND T1.issue_id = T2.issue_id; DELETE FROM os_historystep T1 USING os_historystep T2 WHERE T1.ctid < T2.ctid AND T1.id = T2.id; DELETE FROM OS_HISTORYSTEP_prev T1 USING OS_HISTORYSTEP_prev T2 WHERE T1.ctid < T2.ctid AND T1.id = T2.id;
  • 次に、足りないインデックスを作成します

1 2 3 CREATE UNIQUE INDEX pk_issue_version ON public.issue_version USING btree (issue_id); CREATE UNIQUE INDEX pk_os_historystep_prev ON public.OS_HISTORYSTEP_prev USING btree (id); CREATE UNIQUE INDEX pk_os_historystep ON public.OS_HISTORYSTEP USING btree (id);
  • Jira を再起動します。

  • インデックスの完全再作成を実行すると、すべてが期待通りに動作するはずです。

更新日時: 2024 年 6 月 5 日

さらにヘルプが必要ですか?

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