Automation for Jira アプリで範囲外の整数データベース エラーが発生する

プラットフォームについて: 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) が統計テーブルに新しいエントリを挿入すると、atlassian-jira.log "ERROR: integer out of range" が表示されます。

症状 1

ERROR: integer out of range が、Automation for Jira アプリ (A4J) の統計テーブル AO_589059_RULE_STAT_ROLLUP_DAY および/または AO_589059_RULE_STAT_ROLLUP_HR. に新しいエントリが挿入された際に atlassian-jira.log に表示されます。

Caesium-1-1 ERROR ServiceRunner [c.c.j.p.automation.schedule.RuleInsightsUpdateJob] Error executing rule insights update job com.querydsl.core.QueryException: Caught BatchUpdateException for insert into "public"."AO_589059_RULE_STAT_ROLLUP_DAY" ("CATEGORY", "CLIENT_KEY", "CREATED", "DURATION", "END_TO_END_DURATION", "EXECUTION_COUNT", "QUEUED_ITEM_COUNT", "RULE_ID") values (?, ?, ?, ?, ?, ?, ?, ?) ... Suppressed: org.postgresql.util.PSQLException: ERROR: integer out of range ... Caused by: java.sql.BatchUpdateException: Batch entry 0 insert into "public"."AO_589059_RULE_STAT_ROLLUP_DAY" ("CATEGORY", "CLIENT_KEY", "CREATED", "DURATION", "END_TO_END_DURATION", "EXECUTION_COUNT", "QUEUED_ITEM_COUNT", "RULE_ID") values ('NO_ACTIONS_PERFORMED', 'com.codebarrel.tenant.global', '2020-11-07 00:00:00+00'::timestamp, 57, 57, 1, 1, 110) was aborted: ERROR: integer out of range Call getNextException to see other errors in the batch. ... [CIRCULAR REFERENCE:org.postgresql.util.PSQLException: ERROR: integer out of range]

症状 2

ERROR: integer out of range が、次のテーブルに関して atlassian-jira.log に表示されます: AO_589059_RULE_STAT_ROLLUP_DAY および/または AO_589059_RULE_STAT_ROLLUP_HR when Insight Scheduled jobs are run. However, this time a value is returned from DB and it's not exactly a DB error.

Caesium-1-3 ERROR anonymous [c.c.j.p.automation.schedule.RuleInsightsUpdateJob] Error executing rule insights update job com.querydsl.core.QueryException: Caught SQLDataException for select `AO_589059_RULE_STAT_ROLLUP_DAY`.`ID`, `AO_589059_RULE_STAT_ROLLUP_DAY`.`RULE_ID`, `AO_589059_RULE_STAT_ROLLUP_DAY`.`CREATED`, `AO_589059_RULE_STAT_ROLLUP_DAY`.`AUDIT_ID` from `AO_589059_RULE_STAT_ROLLUP_DAY` `AO_589059_RULE_STAT_ROLLUP_DAY` where `AO_589059_RULE_STAT_ROLLUP_DAY`.`CATEGORY` = ? and `AO_589059_RULE_STAT_ROLLUP_DAY`.`CREATED` <= ? order by `AO_589059_RULE_STAT_ROLLUP_DAY`.`CREATED` asc at com.querydsl.sql.DefaultSQLExceptionTranslator.translate(DefaultSQLExceptionTranslator.java:50) at com.querydsl.sql.Configuration.translate(Configuration.java:459) at com.querydsl.sql.AbstractSQLQuery.fetch(AbstractSQLQuery.java:493) at com.codebarrel.jira.plugin.automation.store.JiraRuleInsightStore.lambda$getInsightCategoryDetailsEarlierThan$10(JiraRuleInsightStore.java:311) at com.codebarrel.data.api.jira.JiraDbConnectionManager.lambda$execute$0(JiraDbConnectionManager.java:47) ... Caused by: java.sql.SQLDataException: Value '4591732034' is outside of valid range for type java.lang.Integer ... Caused by: com.mysql.cj.exceptions.NumberOutOfRange: Value '4591732034' is outside of valid range for type java.lang.Integer

診断

AO_589059_RULE_STAT_ROLLUP_DAYAO_589059_RULE_STAT_ROLLUP_HR の両方のテーブルのシーケンスを調べて、次のことを確認してください。

  • last_value が整数データ型の制限を超えているかどうか

  • CYCLE がオンになっている場合

  • シーケンスに max_value が構成されている場合

select last_value, max_value, is_cycled from "AO_589059_RULE_STAT_ROLLUP_DAY_ID_seq"; select last_value, max_value, is_cycled from "AO_589059_RULE_STAT_ROLLUP_HR_ID_seq";

例:

  • シーケンスが整数データ型制限を超えている場合には last_value2147483647 より大きくなります。

  • max_value に値がない場合、シーケンスには制限が設定されていません。

  • is_cycledf に設定されている場合、サイクリングはオンになっておらず、制限に達してもサイクルは先頭に戻りません。

原因

影響を受ける A4J テーブルのシーケンスで last_value 列が既定の制限 (-2147483648 から +2147483647 までのいずれかの整数) を超えると範囲外の整数エラーが発生します。

ソリューション

回避策

関連するテーブルの切り詰め、シーケンスのリセット、CYCLE のオンへの切り替え、データベース クエリを使用したシーケンスの最大値の設定を行います。手順は次のとおりです。

データベースに変更を加える前に、必ずデータをバックアップしてください。可能であれば、まずステージング サーバーで SQL コマンドの変更、切り詰め、挿入、更新、削除をテストしてください。

1. この前に関連するテーブルが空であることを確認します (ID の競合を避けるため)。以下のコマンドでは、AO_589059_RULE_STAT_ROLLUP_DAYAO_589059_RULE_STAT_ROLLUP_HR の内容がすべて切り詰められるか削除されます。これは、テーブルが 35 日ごとに自動的に消去される A4J 統計にのみ影響します。このステップにより、シーケンスが今後インクリメントしても既存の ID と競合しなくなります。

TRUNCATE "AO_589059_RULE_STAT_ROLLUP_DAY" CASCADE; TRUNCATE "AO_589059_RULE_STAT_ROLLUP_HR" CASCADE

2. シーケンス値を 1 にリセットします。これにより、シーケンスが 1 に設定され、その値から再開されます。

ALTER SEQUENCE "AO_589059_RULE_STAT_ROLLUP_DAY_ID_seq" RESTART; ALTER SEQUENCE "AO_589059_RULE_STAT_ROLLUP_HR_ID_seq" RESTART;

3. サイクルを有効にします。

ALTER SEQUENCE "AO_589059_RULE_STAT_ROLLUP_DAY_ID_seq" CYCLE; ALTER SEQUENCE "AO_589059_RULE_STAT_ROLLUP_HR_ID_seq" CYCLE;

4. 最大シーケンス値を 2147483647 に設定します (整数データ型に設定可能な最大値)。シーケンスがこの値に達すると値が 1 に戻ります。

ALTER SEQUENCE "AO_589059_RULE_STAT_ROLLUP_DAY_ID_seq" MAXVALUE 2147483647; ALTER SEQUENCE "AO_589059_RULE_STAT_ROLLUP_HR_ID_seq" MAXVALUE 2147483647;

MySQL 固有

MySQL のドキュメンテーション ページ (https://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html) で説明されているように、MySQL では「インクリメント」の動作が異なります。以下のコマンドでテーブルの切り詰めと変更を行って、エラーを修正できます。

データベースに変更を加える前に、必ずデータをバックアップしてください。可能であれば、まずステージング サーバーで SQL コマンドの変更、切り詰め、挿入、更新、削除をテストしてください。

TRUNCATE AO_589059_RULE_STAT_ROLLUP_HR; TRUNCATE AO_589059_RULE_STAT_ROLLUP_DAY; ALTER TABLE AO_589059_RULE_STAT_ROLLUP_HR AUTO_INCREMENT = 1; ALTER TABLE AO_589059_RULE_STAT_ROLLUP_DAY AUTO_INCREMENT = 1;

更新日時: September 26, 2025

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

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