Automation for Jira を 9.0.1 以上のバージョンにアップグレード後、自動化ルールを有効/無効にしたり公開したりできない
プラットフォームについて: Data Center のみ。 - この記事は、 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 に次のエラーが表示される
1 2 3
Error Error while updating rule. Error Please reload and try again.
ルールを公開しようとすると、UI に次のエラーが表示される
An unknown error occurred. Please reload and
try
again.
また、(Jira 9.0.1 で導入された) シークレット キーの管理を⚙ > [システム] > [Automation for Jira] > [...] > [シークレット キーを管理] ぺージから行おうとすると、UI に次のエラーが表示されます。
Something went wrong during the last request, please
try
again 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 で設定されている場合)
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
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 で設定されている場合)
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
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
外部キー制約を削除した後でもテーブルを変更する際にエラーが発生した場合、テーブルに予期しない外部キー制約があり、それを削除する必要がある可能性があります。 以下のクエリを実行して、テーブル内のすべての制約を特定できます。どれを削除すべきかわからない場合は、アトラシアン サポートにお問い合わせいただき、このクエリの結果を共有してください。
1
2
3
4
5
--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 スクリプトを使用すると、次のエラーが発生する可能性があります。
インデックスが存在しないため、インデックスをスクリプトから削除できない。例:
1
2
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.
インデックスがテーブル列に依存しているために変更できない。例:
1
2
3
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 テーブルで使用されるインデックスの完全なリストを取得します。
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
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 のエラー「ルールの削除中/更新中のエラー」を解決する方法」をご確認ください
または、サポート ポータルからアトラシアン サポートに連絡することもできます
この内容はお役に立ちましたか?