Automation for Jira を 9.0.1 以上のバージョンにアップグレード後、自動化ルールを有効/無効にしたり公開したりできない
プラットフォームについて: Data Center のみ。 - This article only applies to Atlassian apps on the Data Center プラットフォーム。
この KB は Data Center バージョンの製品用に作成されています。Data Center 固有ではない機能の Data Center KB は、製品のサーバー バージョンでも動作する可能性はありますが、テストは行われていません。 Server* 製品のサポートは 2024 年 2 月 15 日に終了しました。Server 製品を実行している場合は、 アトラシアン Server サポート終了 のお知らせにアクセスして、移行オプションを確認してください。
*Fisheye および Crucible は除く
要約
Automation for Jira (A4J) を 9.0.1 より前のバージョンから 9.0.1 (またはそれ以降のバージョン) にアップグレードした後、次の問題が発生する可能性があります。
一部の自動化ルールを有効化、無効化、公開することができない
ルールを有効または無効にしようとすると、UI に次のエラーが表示される

Error Error while updating rule. Error Please reload and try again.ルールを公開しようとすると、UI に次のエラーが表示される

An unknown error occurred. Please reload andtryagain.
また、(Jira 9.0.1 で導入された) シークレット キーの管理を⚙ > [システム] > [Automation for Jira] > [...] > [シークレット キーを管理] ぺージから行おうとすると、UI に次のエラーが表示されます。

Something went wrong during the last request, pleasetryagain later.
診断
次のアップグレードのいずれかがエラー発生前に実行されました。
アドオン Automation for Jira が (9.0.1 より前のバージョンから) 9.0.1 またはそれ以降のバージョンにアップグレードされ、その操作に ⚙ > [アプリを管理] > [アプリを管理] ぺージが使用された。
または、Jira Software アプリが (9.11.0 より前のバージョンから) 9.11.0 またはそれ以降バージョンにアップグレードされた。
または、Jira Service Management アプリが (5.11.0 より前のバージョンから) 5.11.0 またはそれ以降のバージョンにアップグレードされた。
Automation for Jira アプリは、ある時点で 7.3.0 より前のバージョンで Jira アプリケーションにインストールされました。
Jira アプリケーションは、次の 2 種類のデータベースのいずれかで構成されています。
MySQL
MS SQL Server
次の 2 つのエラーのいずれかが Jira アプリケーション ログにあります。
エラー 1 (Jira が MS SQL で設定されている場合)
2023-08-31 14:53:40,570+0200 http-nio-80-exec-3 ERROR someuser 893x784x6 k0zbpv 0:0:0:0:0:0:0:1 /rest/cb-automation/latest/secrets/GLOBAL [c.a.p.r.c.error.jersey.ThrowableExceptionMapper] Uncaught exception thrown by REST service: Caught SQLServerException for select "AO_589059_RULE_SECRET"."ID", "AO_589059_RULE_SECRET"."KEY", "AO_589059_RULE_SECRET"."VALUE", "AO_589059_RULE_SECRET"."ID", "AO_589059_RULE_SECRET"."KEY", "AO_589059_RULE_SECRET"."VALUE", "AO_589059_SECRET_PROJ_ASSOC"."PROJECT_ID" from "jira"."AO_589059_RULE_SECRET" "AO_589059_RULE_SECRET" left join "jira"."AO_589059_SECRET_PROJ_ASSOC" "AO_589059_SECRET_PROJ_ASSOC" on "AO_589059_RULE_SECRET"."ID" = "AO_589059_SECRET_PROJ_ASSOC"."RULE_SECRET_ID" com.querydsl.core.QueryException: Caught SQLServerException for select "AO_589059_RULE_SECRET"."ID", "AO_589059_RULE_SECRET"."KEY", "AO_589059_RULE_SECRET"."VALUE", "AO_589059_RULE_SECRET"."ID", "AO_589059_RULE_SECRET"."KEY", "AO_589059_RULE_SECRET"."VALUE", "AO_589059_SECRET_PROJ_ASSOC"."PROJECT_ID" from "jira"."AO_589059_RULE_SECRET" "AO_589059_RULE_SECRET" left join "jira"."AO_589059_SECRET_PROJ_ASSOC" "AO_589059_SECRET_PROJ_ASSOC" on "AO_589059_RULE_SECRET"."ID" = "AO_589059_SECRET_PROJ_ASSOC"."RULE_SECRET_ID" at com.querydsl.sql.DefaultSQLExceptionTranslator.translate(DefaultSQLExceptionTranslator.java:50) at com.querydsl.sql.Configuration.translate(Configuration.java:459) at com.querydsl.sql.AbstractSQLQuery.iterateSingle(AbstractSQLQuery.java:410) at com.querydsl.sql.AbstractSQLQuery.iterate(AbstractSQLQuery.java:342) at com.querydsl.core.group.GroupByMap.transform(GroupByMap.java:54) at com.querydsl.core.group.GroupByMap.transform(GroupByMap.java:35) at com.querydsl.core.support.FetchableQueryBase.transform(FetchableQueryBase.java:55) at com.codebarrel.jira.plugin.automation.store.JiraRuleSecretStore.lambda$getAllSecrets$1(JiraRuleSecretStore.java:47) at com.codebarrel.data.api.jira.JiraDbConnectionManager.lambda$execute$0(JiraDbConnectionManager.java:47) at com.atlassian.jira.database.DatabaseAccessorImpl.executeQuery(DatabaseAccessorImpl.java:74) ... Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'jira.AO_589059_RULE_SECRET'. at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:262) at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1632) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:602) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:524) at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7418) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:247) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:222)エラー 2 (Jira が MySQL で設定されている場合)
2023-09-05 12:15:27,855+0000 http-nio-8080-exec-128 ERROR someuser 735x28584544x4 dguzsz 0:0:0:0:0:0:0:1 /rest/cb-automation/latest/secrets/11901 [c.a.p.r.c.error.jersey.ThrowableExceptionMapper] Uncaught exception thrown by REST service: Caught SQLSyntaxErrorException for select `AO_589059_RULE_SECRET`.`ID`, `AO_589059_RULE_SECRET`.`KEY`, `AO_589059_RULE_SECRET`.`VALUE`, `AO_589059_RULE_SECRET`.`ID`, `AO_589059_RULE_SECRET`.`KEY`, `AO_589059_RULE_SECRET`.`VALUE`, `AO_589059_SECRET_PROJ_ASSOC`.`PROJECT_ID` from `AO_589059_RULE_SECRET` `AO_589059_RULE_SECRET` left join `AO_589059_SECRET_PROJ_ASSOC` `AO_589059_SECRET_PROJ_ASSOC` on `AO_589059_RULE_SECRET`.`ID` = `AO_589059_SECRET_PROJ_ASSOC`.`RULE_SECRET_ID` com.querydsl.core.QueryException: Caught SQLSyntaxErrorException for select `AO_589059_RULE_SECRET`.`ID`, `AO_589059_RULE_SECRET`.`KEY`, `AO_589059_RULE_SECRET`.`VALUE`, `AO_589059_RULE_SECRET`.`ID`, `AO_589059_RULE_SECRET`.`KEY`, `AO_589059_RULE_SECRET`.`VALUE`, `AO_589059_SECRET_PROJ_ASSOC`.`PROJECT_ID` from `AO_589059_RULE_SECRET` `AO_589059_RULE_SECRET` left join `AO_589059_SECRET_PROJ_ASSOC` `AO_589059_SECRET_PROJ_ASSOC` on `AO_589059_RULE_SECRET`.`ID` = `AO_589059_SECRET_PROJ_ASSOC`.`RULE_SECRET_ID` at com.querydsl.sql.DefaultSQLExceptionTranslator.translate(DefaultSQLExceptionTranslator.java:50) at com.querydsl.sql.Configuration.translate(Configuration.java:459) at com.querydsl.sql.AbstractSQLQuery.iterateSingle(AbstractSQLQuery.java:410) at com.querydsl.sql.AbstractSQLQuery.iterate(AbstractSQLQuery.java:342) at com.querydsl.core.group.GroupByMap.transform(GroupByMap.java:54) at com.querydsl.core.group.GroupByMap.transform(GroupByMap.java:35) at com.querydsl.core.support.FetchableQueryBase.transform(FetchableQueryBase.java:55) at com.codebarrel.jira.plugin.automation.store.JiraRuleSecretStore.lambda$getSecretsByProject$15(JiraRuleSecretStore.java:174) at com.codebarrel.data.api.jira.JiraDbConnectionManager.lambda$execute$0(JiraDbConnectionManager.java:47) at com.atlassian.jira.database.DatabaseAccessorImpl.executeQuery(DatabaseAccessorImpl.java:74) ... Caused by: java.sql.SQLSyntaxErrorException: Table 'jiradb.ao_589059_rule_secret' doesn't exist at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953) at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:1009)
原因
SQL エラーは、A4J 9.0.1 で導入された DB テーブル「AO_589059_RULE_SECRET」が A4J のアップグレード中に作成できなかったことが原因で発生します。
A4J を下位バージョンから 7.3.0 にアップグレードする前に手動で実行する必要があった SQL スクリプトが実行されなかったため、テーブルを作成できませんでした
ドキュメンテーション「Automation for Jira 7.3 以降へのアップグレード」で説明されているように、次の 2 つの条件を満たす場合、データベース管理者は一部の SQL スクリプトを Jira DB で手動で実行する必要があります。
Jira は MySQL または MS SQL データベースのどちらかに接続されています
A4J を 7.3.0 よりも前のバージョンから、7.3.0 以降にアップグレードしようとしています
ある時点で A4J が 7.3.0 より前のバージョンにインストールされており、スクリプトが一度も実行されていない場合は、9.0.1 へのアップグレード後に次の事象が発生します。
(スクリプトが実行されていれば修正されているはずの) いくつかの DB 制約の問題が原因で、A4J がアップグレード タスクを完了できません
その結果、テーブル AO_589059_RULE_SECRET を作成できません
UI ではさまざまな問題が見られる
[⚙] > [システム] > [Automation for Jira] > [...] > [シークレット キーを管理] ページへのアクセスが
何らかのエラーで失敗する
一部の自動化ルールを編集または公開すると、何らかのエラーで失敗する
Bugfix
この問題を追跡するために、公開課題トラッカーに新しいバグ チケット https://jira.atlassian.com/browse/JIRAAUTOSERVER-844 が発行されています。
このバグの修正は、A4J バージョン 9.0.2 でリリースされました。これは、MySQL または MS SQL データベースを使用して Jira アプリケーション用の SQL スクリプトを実行することで構成されます。これは、ドキュメンテーション「Automation for Jira 7.3 以降へのアップグレード」に従って、A4J が 7.3 以降にアップグレードされたときに実行されるはずです。
注: この修正は、A4J が 8.x から直接 9.0.2 以降のバージョンにアップグレードされた場合にのみ機能します。A4J がすでに 9.0.1 にアップグレードされていて、9.0.2 以降のバージョンにアップグレードする場合には役に立ちません。
ソリューション
バグ修正「https://jira.atlassian.com/browse/JIRAAUTOSERVER-844」は、8.x から 9.0.2 (またはそれ以降のバージョン) に直接アップグレードするお客様にのみ適用されるため、このバージョンにアップグレードしても、A4J がすでに 9.0.1 を使用している場合は機能しません。
このため、この問題を解決する唯一の方法は、次の手順に従って、Jira データベースでいくつかの SQL スクリプトを手動で実行することです。
Jira アプリケーションを停止します
「Automation for Jira 7.3 のアップグレード」のステップ 5 に従って、Jira アプリケーションが使用するデータベースの種類に該当するスクリプト ファイルをダウンロードします
スクリプトをデータベースで実行します
Jira アプリケーションを起動します
SQL スクリプトに関する注意事項
注 1
外部キー制約を削除した後でもテーブルを変更する際にエラーが発生した場合、テーブルに予期しない外部キー制約があり、それを削除する必要がある可能性があります。 以下のクエリを実行して、テーブル内のすべての制約を特定できます。どれを削除すべきかわからない場合は、アトラシアン サポートにお問い合わせいただき、このクエリの結果を共有してください。
--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>');注 2
MS SQL データベース用の SQL スクリプトを使用すると、次のエラーが発生する可能性があります。
インデックスが存在しないため、インデックスをスクリプトから削除できない。例:
Error executing query:
SQL Error [3701] [S0007]: Cannot drop the index 'dbo.AO_589059_AUDIT_ITEM_PROJECT.index_ao_589059_aud2135433486', because it does not exist or you do not have permission.
インデックスがテーブル列に依存しているために変更できない。例:
The index 'nci_wi_AO_589059_AUDIT_ITEM_PROJECT_XXXXXXXXXXXX' is dependent on column 'AUDIT_ITEM_ID'.
ALTER TABLE ALTER COLUMN AUDIT_ITEM_ID failed because one or more objects access this column.これらのエラーは通常、A4J データベース テーブル用にカスタム インデックスが作成されていることが原因であり、すぐに使える A4J では発生しません。ドキュメンテーション「Automation for Jira 7.3 以降へのアップグレード」に記載されている SQL スクリプトは、すぐに使える A4J を使用して Jira アプリケーションで作成およびテストされました。
スクリプトのエラーを修正するには、次の手順に従うことをお勧めします。
次の SQL を実行して、A4J の DB テーブルで使用されるインデックスの完全なリストを取得します。
SELECT
TableName = t.name,
IndexName = ind.name,
IndexId = ind.index_id,
ColumnId = ic.index_column_id,
ColumnName = col.name,
ind.*,
ic.*,
col.*
FROM
sys.indexes ind
INNER JOIN
sys.index_columns ic ON ind.object_id = ic.object_id and ind.index_id = ic.index_id
INNER JOIN
sys.columns col ON ic.object_id = col.object_id and ic.column_id = col.column_id
INNER JOIN
sys.tables t ON ind.object_id = t.object_id
WHERE
ind.is_primary_key = 0
AND ind.is_unique = 0
AND ind.is_unique_constraint = 0
AND t.is_ms_shipped = 0
AND t.name like 'AO_589059_%'
ORDER BY
t.name, ind.name, ind.index_id, ic.is_included_column, ic.key_ordinal;インデックスの名前を反映して MS SQL スクリプトを更新してください
これらのエラーの修正方法に関する詳しいヘルプは、次のとおりです。
詳細については、ナレッジ ベース記事「SQL スクリプトを修正して Automation for Jira のエラー「ルールの削除中/更新中のエラー」を解決する方法」をご確認ください
または、サポート ポータルからアトラシアン サポートに連絡することもできます
この内容はお役に立ちましたか?