SQL スクリプトを修正して Automation For Jira のエラー「ルールの削除中/更新中のエラー」を解決する方法

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

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

*Fisheye および Crucible は除く

要約

Automation for Jira (A4J) を 7.3.0 または 9.0.2 より前のバージョン (ある時点で 7.3.0 より前のバージョンを使用した場合) からそれらのバージョンまたは新しいバージョンにアップグレードする場合、または Jira SW/JSM が 9.11.0/5.11.0 より前のバージョンからそれらのバージョンまたは新しいバージョンにアップグレードされ、環境が MySQL または MSSQL で設定されている場合、ルールを更新または削除しようとすると「Error while updating/deleting rule. Error Please reload and try again" can be thrown 」というエラー メッセージが表示されます。

この記事 (下の「診断」セクションも参照) で紹介している解決策では、SQL スクリプトを実行してデータベースを修正することを推奨しています。ただし、環境内に予期しないインデックスが存在するためにこれに失敗するお客様もいらっしゃいます。適切に実行するにはインデックスをスクリプトに追加するか、インデックスを削除してください。

診断

ルールを編集または削除すると、UI に次のエラー メッセージが表示されます。

ルール削除中のエラー
ルール更新中のエラー

ログの関連メッセージは次のようになっています。

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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 2023-11-27 15:14:22,748-0600 http-nio-8080-exec-7 ERROR user1 914x253122x1 1pcxlou 10.0.0.1 /rest/cb-automation/latest/project/GLOBAL/rule/135 [c.a.p.r.c.error.jersey.ThrowableExceptionMapper] Uncaught exception thrown by REST service: Caught SQLServerException for delete from "jiraschema"."AO_589059_RULE_TO_SECRET" where "AO_589059_RULE_TO_SECRET"."RULE_ID" = ? com.querydsl.core.QueryException: Caught SQLServerException for delete from "jiraschema"."AO_589059_RULE_TO_SECRET" where "AO_589059_RULE_TO_SECRET"."RULE_ID" = ? at com.querydsl.sql.DefaultSQLExceptionTranslator.translate(DefaultSQLExceptionTranslator.java:50) at com.querydsl.sql.Configuration.translate(Configuration.java:459) at com.querydsl.sql.dml.SQLDeleteClause.execute(SQLDeleteClause.java:222) at com.codebarrel.jira.plugin.automation.store.JiraAutomationConfigStore.lambda$delete$14(JiraAutomationConfigStore.java:299) at com.codebarrel.data.api.jira.JiraDbConnectionManager.lambda$execute$0(JiraDbConnectionManager.java:47) at com.atlassian.jira.database.DatabaseAccessorImpl.executeQuery(DatabaseAccessorImpl.java:74) ... at com.codebarrel.data.api.jira.JiraDbConnectionManager.execute(JiraDbConnectionManager.java:45) at com.codebarrel.jira.plugin.automation.store.JiraAutomationConfigStore.delete(JiraAutomationConfigStore.java:285) at com.codebarrel.jira.plugin.automation.store.CachingAutomationConfigStore.delete(CachingAutomationConfigStore.java:115) at com.codebarrel.automation.api.service.AutomationConfigServiceImpl.delete(AutomationConfigServiceImpl.java:359) at com.codebarrel.automation.api.service.AutomationConfigServiceImpl.delete(AutomationConfigServiceImpl.java:352) at com.codebarrel.jira.plugin.automation.rest.RuleResource.deleteRule(RuleResource.java:358) ... at java.base/java.lang.Thread.run(Thread.java:829) Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'jiraschema.AO_589059_RULE_TO_SECRET'. at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:262) at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1632) ... ... 327 more 2023-11-27 15:14:35,316-0600 http-nio-8080-exec-18 ERROR user1 914x253156x2 1pcxlou 10.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 "jiraschema"."AO_589059_RULE_SECRET" "AO_589059_RULE_SECRET" left join "jiraschema"."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 "jiraschema"."AO_589059_RULE_SECRET" "AO_589059_RULE_SECRET" left join "jiraschema"."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.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.codebarrel.data.api.jira.JiraDbConnectionManager.execute(JiraDbConnectionManager.java:45) at com.codebarrel.jira.plugin.automation.store.JiraRuleSecretStore.getAllSecrets(JiraRuleSecretStore.java:41) at com.codebarrel.jira.plugin.automation.store.CachingRuleSecretStore.getAllSecrets(CachingRuleSecretStore.java:61) at com.codebarrel.automation.api.service.RuleSecretServiceImpl.getAllSecrets(RuleSecretServiceImpl.java:64) at com.codebarrel.jira.plugin.automation.rest.SecretsResource.lambda$getSecretsForProject$0(SecretsResource.java:44) at com.codebarrel.jira.plugin.automation.rest.SecretsResource.withJiraAdminPermissions(SecretsResource.java:127) at com.codebarrel.jira.plugin.automation.rest.SecretsResource.getSecretsForProject(SecretsResource.java:44) ... at java.base/java.lang.Thread.run(Thread.java:829) Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'jiraschema.AO_589059_RULE_SECRET'. at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:262) at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1632) ... ... 331 more

関連記事

記事「Automation for Jira 7.3 以降にアップグレードする」(他の記事でも言及されています) の説明に従ってスクリプトを実行すると、環境によっては、以下の例のようにインデックスに関連するエラーが表示されることがあります (ただし、これらに限定されません)。

1 2 3 4 5 6 7 8 Msg 3701, Level 11, State 7, Line 17 Cannot drop the index 'jiraschema.AO_589059_AUDIT_ITEM_COMP_CGE.index_ao_589059_aud1292482400', because it does not exist or you do not have permission. Msg 5074, Level 16, State 1, Line 18 The index 'AO_589059_AUDIT_ITEM_COMP_CGE_10052021' is dependent on column 'AUDIT_ITEM_ID'. Msg 5074, Level 16, State 1, Line 18 The index 'AO_589059_AUDIT_ITEM_COMP_CGE_0110052021' is dependent on column 'AUDIT_ITEM_ID'. Msg 4922, Level 16, State 9, Line 18 ALTER TABLE ALTER COLUMN AUDIT_ITEM_ID failed because one or more objects access this column.

原因

該当なし

ソリューション

まず、下位環境でこの解決策を実行することを強くお勧めします。

Automation for Jira 7.3 以降にアップグレードする」に記載されているスクリプトでは、プレーンな Jira のインデックスのみが考慮されます。データベースに違いがあると、スクリプトの実行は失敗します。これを解決するには以下を実行してください。

  • 環境内に存在するすべてのインデックスを以下のコードで一覧表示します (必要に応じて調整してください)。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 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 ORDER BY t.name, ind.name, ind.index_id, ic.is_included_column, ic.key_ordinal;
  • Jira を停止してデータベースをバックアップします。

  • クエリ結果で ao_589059_* テーブルに関連するインデックスと比較して、カスタム インデックスを削除します (カスタム インデックスがすでにわかっている場合はカスタム インデックスを削除するだけでも構いません)。

  • Automation for Jira 7.3 以降にアップグレードする」に記載されているスクリプトをもう一度実行します (エラーなしで実行されるはずです)。

  • Jira を再起動します。

  • A4J エラーがなくなったかどうかをテストします。

  • (Jiraを停止した状態で) 必要に応じてカスタム インデックスを再作成します。

インデックスやこのプロセスについて質問または不明点がある場合は、アトラシアン サポートに連絡のうえ、A4J エラーのスクリーンショット、サポート zip、上記のクエリの結果を添付してチケットを起票してください。

更新日時: 2024 年 6 月 6 日

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

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