Automation for Jira - スレッドが不足しているために一部の Jira 課題でルールがトリガーされない
プラットフォームについて: Data Center のみ。 - この記事は、 Data Center プラットフォーム。
この KB は Data Center バージョンの製品用に作成されています。Data Center 固有ではない機能の Data Center KB は、製品のサーバー バージョンでも動作する可能性はありますが、テストは行われていません。 Server* 製品のサポートは 2024 年 2 月 15 日に終了しました。Server 製品を実行している場合は、 アトラシアン Server サポート終了 のお知らせにアクセスして、移行オプションを確認してください。
*Fisheye および Crucible は除く
要約
一部の Jira 課題で自動化ルールがトリガーされない (Jira 課題がランダムにスキップされる)。
たとえば、課題が新規作成されたときにトリガーされるよう設定された自動化ルールがあるとします。この自動化ルールの監査ログを確認すると、自動化によってスキップされた課題についてのエントリがログにないことがわかります。
注意: これは Jira に少なくとも 2 つのノードがある場合に発生しました。
診断
Jira が少なくとも 2 つのノードのクラスターで実行されています。
自動化ルールでスキップされたすべての課題が同一の "不健康な" ノード上で作成/更新されている
各ノードでスレッド ダンプを生成すると、次のことが確認できる
“正常な“ ノード (課題がスキップされないノード) で、A4J イベント シリアライザー スレッドが稼働しています (スレッド名の形式は automation-event-serializer:thread-X)。
“正常ではない“ ノード (課題がスキップされるノード) で、A4J イベント シリアライザー スレッドがすべて欠如しています (スレッド名の形式は automation-event-serializer:thread-X)。
A4J アプリは各ノードで適切に有効化されており、次のいずれかの方法で確認できます。
各 Jira ノードに直接ログインした後に ⚙ > [アプリを管理] > [アプリを管理] ページに移動する
各 Jira ノードでサポート zip を生成し、各ノードの application.xml ファイルで A4J が有効化されていることを確認する
1
2
3
4
5
6
7
8
9
10
<plugin>
<key>com.codebarrel.addons.automation</key>
<name>Automation for Jira</name>
<version>8.0.0</version>
<vendor>Atlassian</vendor>
<status>ENABLED</status>
<vendor-url>https://atlassian.com/</vendor-url>
<framework-version>2</framework-version>
<bundled>User installed</bundled>
</plugin>
少なくとも 1 つのノードで A4J が無効化されている場合、このナレッジ ベース記事は関連しません。代わりに、別のナレッジ ベース記事である「Automation for Jira - アプリが無効化されているために一部の Jira 課題でルールがトリガーされない」をご確認ください。
Jira の再起動直後に Jira のアプリ ログを確認すると、次の内容が確認できる。
"正常な" ノードでは、メソッド getService bundle の呼び出しがバンドル com.atlassian.jira.plugin.automation.for-Jira (A4J 由来) に対して行われ、その直後に A4J のスレッドの初期化が行われています。
1
2
3
4
5
6
7
8
2022-09-19 10:51:01,027-0700 localhost-startStop-1 DEBUG [c.a.activeobjects.osgi.ActiveObjectsServiceFactory] getService bundle [com.atlassian.jira.plugin.automation.for-jira]
...
2022-09-19 10:51:01,369-0700 localhost-startStop-1 WARN [c.c.j.p.automation.queue.JiraAutomationQueueExecutor] Initialising automation-rule-executor pool with 6 threads...
2022-09-19 10:51:01,371-0700 localhost-startStop-1 WARN [c.c.j.p.automation.queue.JiraAutomationQueueExecutor] automation-rule-executor pool running with 6 threads.
2022-09-19 10:51:01,371-0700 localhost-startStop-1 WARN [c.c.j.p.automation.queue.JiraAutomationQueueExecutor] Initialising automation-queue-claimer...
2022-09-19 10:51:01,374-0700 automation-queue-claimer:thread-1 WARN [c.c.j.p.automation.queue.JiraAutomationQueueExecutor] automation-queue-claimer is running.
"正常ではない" ノードでは、メソッド getService bundle の呼び出しがバンドル com.atlassian.jira.plugin.automation.for-Jira (A4J 由来) に対して行われるべきでしたが、そのトレースがありません。また、A4J スレッドの初期化についても見つかりません。
原因
自動化ルールによって一部の Jira 課題がスキップされるのは、Jira イベントをリッスンする A4J スレッド (automation-event-serializer:thread-X から始まる名前を持つスレッド) が特定のノードでまったく実行されていないためです。結果として、そのノードで Jira 課題が作成/更新されると、それらの課題によって起動されたイベントが A4J で検知されることなく失われ、ルールがトリガーされません。
"正常ではない" ノードで A4J スレッドが実行されない厳密な理由は不明です。何らかの状況下で、A4J の起動時に対象のスレッドを適切に初期化できていない可能性が考えられます。この状況に至る正確な条件は不明です。このような症状は Jira の再起動ごとに発生するわけではなく、断続的に発生するためです。
ソリューション
正常ではないノードで A4J を安定した状態に戻すにはさまざまな方法があります。いずれの方法も A4J の再初期化を強制的に行わせるという点で同等です。
回避策 1 - “正常ではない“ ノードを再起動する
回避策 2 - A4J を新しいバージョンにアップグレードする
回避策 3 - A4J をアンインストールして、同じバージョンを再インストールする
警告 - 上記の回避策はすべて、ダウンタイムが発生したり (回避策 1)、一時的にパフォーマンスが影響を受けたり (回避策 2 と 3) する可能性があるため、保守の時間枠を予定しておくことをお勧めします。
この内容はお役に立ちましたか?