"An unknown error occurred" when enabling or saving Jira Automation rules after upgrade

お困りですか?

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

コミュニティに質問

プラットフォームについて: 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 は除く

    

要約

After upgrading Automation for Jira (A4J), users are no longer able to publish, edit, or save rules. Saving results in the error below:

An unknown error occurred. Please reload and try again.


If Automation For Jira was upgraded from any version below 9.0.1 to version 9.0.1 or above, the following issues might also be observed:

  • It becomes impossible to enable, disable, and publish some automation rules
    • ルールを有効または無効にしようとすると、UI に次のエラーが表示される

      Error
      Error while updating rule. Error
      Please reload and try again.
  • Additionally, when trying to manage the Secret Keys (feature introduced in Jira 9.0.1) via the page ⚙  > System > Automation for Jira > ... > Manage Secret Keys, the following error is thrown in the UI:

    Something went wrong during the last request, please try again later.

環境

Environment for Root cause 1

  • 8.20.0 以降の任意のバージョンの Jira Server/Data Center
  • Automation For Jira (A4J) が
    • 現在バージョン9.0.1 である、または
    • ある時点で 9.0.1 にアップグレードされ、その後、より高いバージョンにアップグレードされた
  • Jira アプリケーションは、以下の 2 つの種類のデータベースのいずれかで構成されています。
    • MySQL
    • MS SQL Server

Environment for Root cause 2

  • Jira Server/Data Center on a version lower than 9.17.0
  • Automation For Jira (A4J) is on the version 9.2.1 or any higher version

診断

根本原因の診断 1

  • 以下のアップグレードのどちらも、エラーが発生する前に実行された
    • アドオン「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 よりも前のバージョンでインストールされた。
  • 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)
      	at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:446)
    • エラー 2 (Jira が MS SQL で設定されている場合)

      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)

根本原因の診断 2

  • Automation For Jira was upgraded to the version 9.2.1 or any higher version
  • Jira is on a version lower than 9.17.0
  • The error below (or a similar error is found in the Jira application logs:

    2024-11-05 06:25:39,287-0600 http-nio-8080-exec-17 ERROR admin 385x663832x1 1vnu1k7 127.0.0.1 /rest/cb-automation/latest/project/GLOBAL/rule/1 [c.a.p.r.c.error.jersey.ThrowableExceptionMapper] Uncaught exception thrown by REST service: com/atlassian/cache/ReadThroughCache
    java.lang.NoClassDefFoundError: com/atlassian/cache/ReadThroughCache
    	at com.codebarrel.jira.plugin.automation.service.ManualTriggerServiceImpl.ruleModified(ManualTriggerServiceImpl.java:245)
    	at com.codebarrel.jira.plugin.automation.event.EventRuleRegistryLauncher$2.onRuleChanged(EventRuleRegistryLauncher.java:87)
    	at com.codebarrel.automation.api.service.AutomationConfigServiceImpl.notifyChangeListenersRuleModified(AutomationConfigServiceImpl.java:566)
    	at com.codebarrel.automation.api.service.AutomationConfigServiceImpl.validateAndStore(AutomationConfigServiceImpl.java:559)
    	at com.codebarrel.automation.api.service.AutomationConfigServiceImpl.updateRule(AutomationConfigServiceImpl.java:322)
    	at com.codebarrel.jira.plugin.automation.rest.RuleResource.updateRule(RuleResource.java:254)
    	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.base/java.lang.reflect.Method.invoke(Unknown Source)

原因

Root Cause 1

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 へのアップグレード後に次のことが起こります。

  • A4J will fail to complete its upgrade tasks due to some DB constraint issues (that would have been fixed with the script)
  • その結果、「AO_ 589059 _RULE_SECRET」を作成できない
  • UI ではさまざまな問題が見られる
    • ⚙ > [システム] > [Automation for Jira] > [...] > [シークレット キーを管理] が何らかのエラーで失敗する
    • 一部の自動化ルールを編集または公開すると、何らかのエラーで失敗する

この問題を追跡するために、公開課題トラッカーに新しいバグチケットが発行されています。https://jira.atlassian.com/browse/JIRAAUTOSERVER-844

このバグの修正は A4J バージョン 9.0.2 でリリースされ、ドキュメント「Automation for Jira 7.3 以降にアップグレードする」にあるように、A4J が 7.3 以上にアップグレードされた時点で実行されるべき MySQL または MSSQL データベースを使用した Jira アプリケーション用の SQL スクリプトの実行で構成されています。

(warning) この修正は、A4Jが 8.x から直接 9.0.2 以上のバージョンにアップグレードされた場合にのみ機能することに注意してください。A4J が既に 9.0.1 にアップグレードされていて 9.0.2 以上にアップグレードする場合には役に立ちません。

Root Cause 2

The reason why rules can't be enabled is because of the bug https://jira.atlassian.com/browse/JIRAAUTOSERVER-1079.

Due to this bug, A4J 9.2.1 does not work with Jira versions below 9.17.0.

ソリューション

根本原因の解決策 1

バグ修正「https://jira.atlassian.com/browse/JIRAAUTOSERVER-844」は、8.x からに直接 9.0.2 (またはそれ以降のバージョン) にアップグレードするお客様にのみ適用されます。A4J がすでに 9.0.1 でこのバージョンにアップグレードしても役に立ちません。

このため、この問題を解決する唯一の方法は、次の手順に従って、Jira データベースでいくつかの SQL スクリプトを手動で実行することです。

  1. Jira アプリケーションを停止します
  2. Automation for Jira 7.3 のアップグレードの手順 5 に従って、Jira アプリケーションが使用するデータベースの種類に関連するスクリプト ファイルをダウンロードします
  3. Run the script on the Jira Database ( Make sure you are running the scripts on the correct database where your current Jira is connected to).
  4. 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

(info) When using the SQL script that is meant for the MSSQL Database, you might run into some of the errors below:

  • Error indicating that an index cannot be dropped from the script because it does not exist, for example:

    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.
  • Error indicating that a table column could not be altered because an index is dependent on it:

    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.

These errors usually come from the fact that some custom indexes have been created for the A4J database tables, which don't come out-of-the-box with A4J. The SQL scripts provided in the documentation Upgrading to Automation for Jira 7.3 or later were written and tested on a Jira application using A4J out-of-the-box.

To fix the errors from the script, we recommend following the steps below:

  • Execute the SQL below below to get the full list of indexes used by the A4J DB tables:

    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;
  • Update the MS SQL Script to reflect the name of the indexes

(info) For further help about how to fix these errors:


根本原因の解決策 2

Rollback the A4J upgrade to the previous stable version, by performing the steps below:

  • Go to Automation for Jira's Version history page and download A4J on a version lower than 9.2.1, for example 9.2.0
  • In the Jira application
    • Go to the page ⚙ > Manage Apps > Manage Apps
    • Look for the Automation For Jira app
    • Un-install it
    • Use the upload app button to install the A4J version downloaded from the version history page


最終更新日 2024 年 11 月 18 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.