Automation for Jira のアップグレードまたはアップデート後に Automation for Jira が動作しない
プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Fisheye および Crucible は除く
要約
Automation が予想どおりに動作していません。既存のルールを変更しようとすると、UI にエラーが表示されます。
環境
Automation for Jira v7.3 以降
Jira 7.7.0 以降
診断
- 最近、Jira をアップグレードした可能性があります。
- 最近、Automation for Jira を v7.3 以降にアップデートしました。
Automation for Jira が予想どおりに動作していません。プロジェクトの自動化を表示すると、次のエラーが表示される場合があります
Error Error while updating rule. Error Please reload and try again.
Automation テーブルに関連するエラーがログに表示されます。次にいくつかを例示します。
2022-06-02 16:58:01,559+0000 http-nio-127.0.0.1-8082-exec-23 ERROR admin 1018x25070x1 1govjlw 123.45.678.901,10.11.12.13,127.0.0.1 /rest/cb-automation/latest/project/13800/rule/3470 [c.a.p.r.c.error.jersey.ThrowableExceptionMapper] Uncaught exception thrown by REST service: Caught MySQLSyntaxErrorException for select distinct `AO_589059_AUTOMATION_QUEUE`.`AUDIT_ITEM_ID`, `AO_589059_AUTOMATION_QUEUE`.`EXECUTION_UUID` from `AO_589059_AUTOMATION_QUEUE` `AO_589059_AUTOMATION_QUEUE` where `AO_589059_AUTOMATION_QUEUE`.`RULE_ID` = ? and `AO_589059_AUTOMATION_QUEUE`.`AUDIT_ITEM_ID` is not null and `AO_589059_AUTOMATION_QUEUE`.`EXECUTION_UUID` is not null com.querydsl.core.QueryException: Caught MySQLSyntaxErrorException for select distinct `AO_589059_AUTOMATION_QUEUE`.`AUDIT_ITEM_ID`, `AO_589059_AUTOMATION_QUEUE`.`EXECUTION_UUID` from `AO_589059_AUTOMATION_QUEUE` `AO_589059_AUTOMATION_QUEUE` where `AO_589059_AUTOMATION_QUEUE`.`RULE_ID` = ? and `AO_589059_AUTOMATION_QUEUE`.`AUDIT_ITEM_ID` is not null and `AO_589059_AUTOMATION_QUEUE`.`EXECUTION_UUID` is not null at com.querydsl.sql.DefaultSQLExceptionTranslator.translate(DefaultSQLExceptionTranslator.java:50) at com.querydsl.sql.Configuration.translate(Configuration.java:459) ... Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'AO_589059_AUTOMATION_QUEUE.EXECUTION_UUID' in 'field list' at sun.reflect.GeneratedConstructorAccessor745.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ...
2022-06-02 16:58:15,786+0000 Caesium-1-3 ERROR ServiceRunner [c.c.j.p.automation.schedule.RuleInsightsUpdateJob] Error executing rule insights update job com.querydsl.core.QueryException: Caught MySQLSyntaxErrorException for select `AO_589059_RULE_STAT_ROLLUP_HR`.`CREATED` from `AO_589059_RULE_STAT_ROLLUP_HR` `AO_589059_RULE_STAT_ROLLUP_HR` order by `AO_589059_RULE_STAT_ROLLUP_HR`.`CREATED` desc limit ? at com.querydsl.sql.DefaultSQLExceptionTranslator.translate(DefaultSQLExceptionTranslator.java:50) at com.querydsl.sql.Configuration.translate(Configuration.java:459) ... Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'jiradb.AO_589059_RULE_STAT_ROLLUP_HR' doesn't exist at sun.reflect.GeneratedConstructorAccessor745.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ...
2022-06-02 17:00:15,781+0000 Caesium-1-1 ERROR ServiceRunner [c.c.j.p.automation.schedule.RuleInsightsUpdateJob] Error executing rule insights update job com.querydsl.core.QueryException: Caught MySQLSyntaxErrorException for select `AO_589059_RULE_STAT_ROLLUP_MIN`.`CREATED` from `AO_589059_RULE_STAT_ROLLUP_MIN` `AO_589059_RULE_STAT_ROLLUP_MIN` order by `AO_589059_RULE_STAT_ROLLUP_MIN`.`CREATED` desc limit ? at com.querydsl.sql.DefaultSQLExceptionTranslator.translate(DefaultSQLExceptionTranslator.java:50) at com.querydsl.sql.Configuration.translate(Configuration.java:459) ... Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'jiradb.AO_589059_RULE_STAT_ROLLUP_MIN' doesn't exist at sun.reflect.GeneratedConstructorAccessor745.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ...
2022-06-02 17:00:24,465+0000 Caesium-1-2 ERROR anonymous [c.c.j.p.automation.schedule.AutomationRuleSchedulerJob] Error executing rule scheduler service job com.querydsl.core.QueryException: Caught MySQLSyntaxErrorException for insert into `AO_589059_AUTOMATION_QUEUE` (`CLAIM_COUNT`, `CLIENT_KEY`, `CREATED`, `PAYLOAD`, `PRIORITY`, `RULE_ID`, `EXECUTION_UUID`) values (?, ?, ?, ?, ?, ?, ?) at com.querydsl.sql.DefaultSQLExceptionTranslator.translate(DefaultSQLExceptionTranslator.java:50) at com.querydsl.sql.Configuration.translate(Configuration.java:459) ... Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'EXECUTION_UUID' in 'field list' at sun.reflect.GeneratedConstructorAccessor745.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ...
原因
Automation for Jira の v7.3 以降に対するアップデートが、このドキュメント「Automation for Jira 7.3 へのアップグレード」の要件に従っても実行されませんでした。
- Automation for Jira 7.3 は、データベース テーブルで、
integer
ではなく異なるタイプの ID、biginteger
を代用します。以前のバージョンからアップグレードする場合は ID はアップグレード後に新しいタイプに自動で移行されますが、成功させるにはいくつかの前提条件となるステップを完了する必要があります。詳細については、リンク先のドキュメント「Automation for Jira 7.3 へのアップグレード」をご参照ください。
ソリューション
次の手順に従って、Automation for Jira のアップデートが確実に正常に実行されるようにします。
- 「アプリのアンインストール」に従って Automation for Jira をアンインストールします。
- Jira を停止します。
- Jira データベースのバックアップを作成します。
「Automation for Jira 7.3 へのアップグレード」に従って、データをデータベース テーブルから削除します。
For Postgres-- AUTOMATION QUEUE TABLE delete from "AO_589059_AUTOMATION_QUEUE"; -- AUDIT LOG TABLES delete from "AO_589059_AUDIT_ITEM_PROJECT"; delete from "AO_589059_AUDIT_ITEM_ASC_ITEM"; delete from "AO_589059_AUDIT_ITEM_CGE_ITEM"; delete from "AO_589059_AUDIT_ITEM_COMP_CGE"; delete from "AO_589059_AUDIT_ITEM"; -- RULE STAT TABLES delete from "AO_589059_RULE_STAT"; delete from "AO_589059_RULE_STAT_ROLLUP_DAY"; delete from "AO_589059_RULE_STAT_ROLLUP_HR"; delete from "AO_589059_RULE_STAT_ROLLUP_MIN";
For SQL Server-- AUTOMATION QUEUE TABLE delete from jiraschema.AO_589059_AUTOMATION_QUEUE; -- AUDIT LOG TABLES delete from jiraschema.AO_589059_AUDIT_ITEM_PROJECT; delete from jiraschema.AO_589059_AUDIT_ITEM_ASC_ITEM; delete from jiraschema.AO_589059_AUDIT_ITEM_CGE_ITEM; delete from jiraschema.AO_589059_AUDIT_ITEM_COMP_CGE; delete from jiraschema.AO_589059_AUDIT_ITEM; -- RULE STAT TABLES delete from jiraschema.AO_589059_RULE_STAT; delete from jiraschema.AO_589059_RULE_STAT_ROLLUP_DAY; delete from jiraschema.AO_589059_RULE_STAT_ROLLUP_HR; delete from jiraschema.AO_589059_RULE_STAT_ROLLUP_MIN;
For SQL Server, you'll need to replace the "jiraschema" name used above with the name of your database schema.
- For MySql
-- AUTOMATION QUEUE TABLE delete from AO_589059_AUTOMATION_QUEUE; -- AUDIT LOG TABLES delete from AO_589059_AUDIT_ITEM_PROJECT; delete from AO_589059_AUDIT_ITEM_ASC_ITEM; delete from AO_589059_AUDIT_ITEM_CGE_ITEM; delete from AO_589059_AUDIT_ITEM_COMP_CGE; delete from AO_589059_AUDIT_ITEM; -- RULE STAT TABLES delete from AO_589059_RULE_STAT; delete from AO_589059_RULE_STAT_ROLLUP_DAY; delete from AO_589059_RULE_STAT_ROLLUP_HR; delete from AO_589059_RULE_STAT_ROLLUP_MIN;
- Jira を再起動します。
- Automation for Jira をインストールします。
- [管理] > [アプリを検索] の順に移動して、Automation for Jira を検索してインストールします。
MySQL または SQL Server データベースをご利用の場合は、次の手順に従います。
- Jira をもう一度停止します。
- 「Automation for Jira 7.3 へのアップグレード」のステップ 5 に従って、データベースの関連スクリプトをダウンロードします。
- スクリプトをデータベースで実行します。
- Jira を再起動します。
Note about scripts
外部キー制約を削除した後でもテーブルを変更する際にエラーが発生した場合、テーブルに予期しない外部キー制約があり、それを削除する必要がある可能性があります。 以下のクエリを実行して、テーブル内のすべての制約を特定できます。どれを削除すべきかわからない場合は、アトラシアン サポートにお問い合わせいただき、このクエリの結果を共有してください。
--MySQL
select * from information_schema.KEY_COLUMN_USAGE where TABLE_NAME = '<table_name>';
--MSSQL
SELECT * FROM sys.foreign_keys WHERE parent_object_id = OBJECT_ID('<table_name>');